1. Home
  2. read
  3. Tutorial CRUD CodeIgniter 4 Lengkap Untuk Pemula

Tutorial CRUD CodeIgniter 4 Lengkap Untuk Pemula



 Tutorial  CRUD CodeIgniter 4 Lengkap Untuk Pemula


Tutorial CodeIgniter 4 : Beberapa Bulan lalu ramainya sebuah topik pembahasan untuk framework codeigniter 4 di Indonesia, sebagai user CodeIgniter seperti saya tentunya penasaran untuk mencoba framework yang masih anget ini.

CodeIgniter muncul versi terbaru yaitu versi 4, cukup banyak hal yang berubah dari segi bentuk kode bagi saya seperti penambahan namespace, use dan sebagainya pada fitur yang dibawa php versi 7 , meskipun saya juga merupakan user baru dari codeigniter 4 ini dan masih perlu sama-sama belajar untuk CI 4 ini.

" Nah langsung aja kita ketopik utama "

Berikut Tutorial basic crud codeIgniter 4 semoga gak bosan ya ngikutin sampe akhir ya hehehe, cekidot :

Tutorial basic CRUD CodeIgniter 4

Hal-hal apa saja yg akan di pelajari pada tutorial basic CRUD CodeIgniter 4 ini yaitu sebagai berikut :

1. Pengenalan CodeIgniter 4

2. Cara Installasi CodeIgniter 4

3. Membuat Aplikasi CRUD Sederhana dengan CodeIgniter 4, berikut hal-hal yang dipelajari :

  • Melihat konsep menampilkan data view ( Read )
  • Mengkoneksikan CodeIgniter 4 dengan Database
  • Menampilkan data dari database ke view dengan tampilan Bootstrap 4 ( Read )
  • Melakukan Insert data ( Create )
  • Melakukan Update data ( Update )
  • Melakukan Delete data ( Delete )

Masuk Ke tutorial :

Pengenalan CodeIgniter 4

CodeIgniter merupakan salah satu Framework PHP untuk membangun aplikasi berbasis web, yang bersifat open source yang menggunakan metode MVC ( Model, View, Controller). Framework Codeigniter dibuat dengan tujuan yang sama dengan framework lain yaitu membantu mempermudah kan developer atau programmer dalam membangun sebuah aplikasi berbasis web, tanpa harus build dan coding dari awal.

MVC adalah teknik atau konsep yang memisahkan komponen utama menjadi 3 bagian :

  • Model
    Model merupakan bagian penanganan yang berhubungan atau manipulasi data dengan database, misal mengambil data dari database, dan proses crud atau intruksi yang berhubungan dengan database diletakan di dalam model.
  • View
    View merupakan bagian penanganan interface atau antarmuka web, yang muncul kepada user, dengan memisahkan controller dengan model dapat memudahkan programmer untuk melakukan suatu pengembangan web pada tampilan halaman suatu website.
  • Controller
    Controller merupakan bagian instruksi aksi yang menghubungkan model dan view, jadi controller ini kumpulan instruksi aksi yang berfungsi sebagai jembatan dari model dan view.

Spesifikasi yang dibutuhkan CodeIgniter 4 : Menurut dokumentasi resmi CodeIgniter, CI 4 membutuhkan dan menggunakan spesifikasi PHP >= 7.2 , bila anda masih menggunakan PHP < 7.2 disarankan untuk melakukan Update.

Installasi CodeIgniter 4

untuk menginstall CodeIgniter 4 dapat dilakukan dengan 2 cara, yaitu dengan manual download dari web codeigniter dan instalasi dengan melalui composer.

  1. Installasi Manual
    Untuk Installasi Manual pada CodeIgniter 4,  sebenarnya persis dengan cara menginstall CodeIgniter 3, dengan mendownload file CodeIgniter ke website nya yaitu : https://codeigniter.com/ yang versi 4.0.2 atau langsung saja ke link berikut : https://github.com/codeigniter4/framework/archive/v4.0.2.zip, lalu extrack file CodeIgniter anda ke web server anda, misal xampp ke dalam folder htdocs.

    Xampp Windows : C:/xampp/htdocs

    Lampp Linux : ~/opt/lampp/htdocs

  2. Installasi Melalui Composer
    Nah CodeIgniter 4 bisa diinstall melalui composer, Composer merupakan Dependency Manager untuk PHP. Untuk dapat melakukan installasi CodeIgniter 4 menggunakan composer, anda harus menginstall composer dahulu dikomputer anda. Jika Anda menggunakan windows, Anda dapat mendownload Composer-Setup.exe pada link berikut:

    https://getcomposer.org/download/

    Jika Anda menggunakan Linux/Unix/macOS, cek link pada link berikut :

    https://getcomposer.org/doc/00-intro.md

    Untuk memastikan apakah composer telah terinstal dengan baik di computer Anda, silahkan buka Terminal / Command Prompt dan ketikan perintah berikut:
    composer -v

    Jika composer terinstall dengan baik maka ada terlihat versi composer nya seperti berikut :



    untuk langkah penginstallannya, silahkan buka terminal/ command prompt berikut beralih ke folder xampp/htdocs untuk windows :
    cd ../../xampp/htdocs
    untuk versi linux dengan Lampp :
    cd /opt/lampp/htdocs
    setelah masuk folder htdocs, pada terminal atau command prompt anda, langsung ketikan perintah untuk menginstall CodeIgniter 4 yaitu :
    composer create-project codeigniter4/appstarter belajar-ci --no-dev
    Atau seperti gambar berikut :



    lalu setelah itu masuk ke folder belajar-ci dengan perintah berikut :
    cd belajar-ci
    dan ketikan perintah berikut untuk menjalankan file codeigniternya:
    php spark serve
       

    lalu buka web browser anda dan ketik url :http://localhost:8080

    atau seperti gambar berikut :


Membuat aplikasi pertama dengan CodeIgniter 4

Pada CodeIgniter 4, mengambil konsep yang sama dengan CodeIgniter 3 yang menggunakan konsep MVC ( Model View Controller ), kita bisa lihat struktur folder pada CodeIgniter 4 sebagai berikut :

dan nah sebenernya codeigniter 4 memiliki struktur hampir sama dengan codeigniter 3 :

  • Anda bisa membuka folder app yang dulunya bernama application. Di dalamnya Anda tetap bisa membuat Controller, Model, View, Library, Helper, Third Party dan lain-lain.
  • Folder vendor yg berisi tentang modul system CodeIgniter 4 itu sendiri.
  • Public. Folder ini berisi file penting yaitu index.php. Mirip dengan Framework Laravel, file ini yang berfungsi untuk menjalankan aplikasi.
  • Env. Di sini Anda bisa mengatur database (CI 3 adanya di config/database.php), production / development, base_url, session, dan lain-lain.
  • Spark. Mirip artisan pada Framework Laravel yang bisa digunakan jika Anda membutuhkan sesuatu semisal menjalankan aplikasi.

# step 1 (pertama ) Cara menampilkan view pada CI 4 :

Nah pada step ini yang kita lakukan pertama adalah bagaimana cara controller menampilkan view pada CI 4 :

1. buatlah sebuah controller dengan nama Halo.php pada folder app/Controllers lalu isi file tersebut dengan code berikut :

<?php 
namespace App\Controllers;
use CodeIgniter\Controller;

class Halo extends Controller
{
	public function index()
	{
        $data['title']  = 'Hallo Dunia !';
        $data['msg']    = 'Selamat datang di CodeIgniter 4';
		echo view('halo_view',$data);
	}

}

2. lalu buatlah sebuah view dengan nama halo_view.php pada folder app/Views lalu kita coba isi html nya dengan kode berikut :

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title><?= $title;?></title>
    </head>
    <body>
        <h1><?= $msg;?></h1>
    </body>
</html>

kemudian cek hasil kerja kita, dengan buka browser dan buka url berikut :

http://localhost:8080/halo

jika berjalan maka terlihat seperti gambar berikut :

   


 # step 2 kedua yaitu mengetahui cara menghubungkan database pada CodeIgniter 4 :

untuk membuat koneksi database, tentu kita akan buat database terlebih dahulu, buat db dengan nama ci4_barang dan buat table barang :

   

 

Lalu membuat koneksi database dengan codeigniter, ada 2 cara :

Cara 1 dengan konfigurasi file Database.php pada folder file app/Config/Database.php

Buka file Database.php lalu edit isi kode array, 'username', 'password', dan 'database' seperti versi pendahulunya, CI 3 :

public $default = [
		'DSN'      => '',
		'hostname' => 'localhost',
		'username' => 'root', // isi username
		'password' => '', // isi password bila ada
		'database' => 'ci4_barang', // ubah dbname
		'DBDriver' => 'MySQLi',
		'DBPrefix' => '',
		'pConnect' => false,
		'DBDebug'  => (ENVIRONMENT !== 'production'),
		'cacheOn'  => false,
		'cacheDir' => '',
		'charset'  => 'utf8',
		'DBCollat' => 'utf8_general_ci',
		'swapPre'  => '',
		'encrypt'  => false,
		'compress' => false,
		'strictOn' => false,
		'failover' => [],
		'port'     => 3306,
	];

 

Cara 2 Dengan env yg terdapat pada folder root :

cara ini cara ke 2 selain cara yang diatas, untuk mengkoneksikan database ke codeigniter 4 :

temukan kode berikut :

# database.default.hostname = localhost
# database.default.database = ci4
# database.default.username = root
# database.default.password = root
# database.default.DBDriver = MySQLi

lalu ubah dengan menghilangkan tanda # atau comment, dan isi seperti biasa username, password dan dbname nya :

database.default.hostname = localhost
database.default.database = ci4_barang
database.default.username = root
database.default.password = 
database.default.DBDriver = MySQLi

note : pada tutorial ini saya menggunakan cara ke 1 untuk membuat koneksi database .


" Mulai Langkah-langkah CRUD "

#step 3 cara menampilkan data view dari database (READ)

pada step  ke 3 lakukan isi data table barang anda yang tadi anda buat dengan menginsert table barang nya dengan mengeksekusi query tersebut :

INSERT INTO `barang` (`id_barang`, `nama_barang`, `qty`, `harga_beli`, `harga_jual`) 
VALUES (NULL, 'Bola Voli', '12', '80000', '120000');

atau isinya seperti ini pada phpmyadmin :

 

setelah table barang ada data nya,lalu anda ikuti langkah berikut :

1. Buat sebuah file model Barang_model.php pada folder app/Models, kemudian ketikan kode berikut :

<?php 
namespace App\Models;
use CodeIgniter\Model;
 
class Barang_model extends Model
{
    protected $table = 'barang';
     
    public function getBarang($id = false)
    {
        if($id === false){
            return $this->findAll();
        }else{
            return $this->getWhere(['id_barang' => $id]);
        }   
    }
 
}

model berikut mempunyai 1 fungsi yaitu :

  1. menampilkan data tabel barang, dengan function getBarang() dengan parameter $id
  2. jika  parameter $id === false atau parameter tsb diartikan jika $id sama dengan salah atau $id tidak bernilai/not value, maka table barang akan ditampilkan semua dengan fungsi findAll()
  3. lalu else nya jika $id != false, atau memiliki nilai atau value, maka kembalikan data berdasarkan id_barang = $id dengan fungsi getWhere()

pada kode $table = 'barang'; menunjukan bahwa model ini menggunakan table barang, pada database.

2. Buat sebuah Controller yaitu Barang.php pada folder app/Controllers kemudian ketik kode berikut :

<?php
namespace App\Controllers;
use CodeIgniter\Controller;
use App\Models\Barang_model;

class Barang extends Controller
{
    public function index()
    {
        $model = new Barang_model;
        $data['title']     = 'Data Barang';
        $data['getBarang'] = $model->getBarang();
        echo view('header_view', $data);
        echo view('barang_view', $data);
        echo view('footer_view', $data);
    }
}

pada controller kita menggunakan use App\Models\Barang_model; untuk memanggil class model pada file model yg kita buat sebelumnya

pada function index() ada beberapa isi sebagai berikut :

$model = new Barang_model;

kode diatas untuk memanggil semua function pada class model Barang_model.php

$data['title'] = 'Data Barang';

kode diatas untuk membuat title dinamis pada tampilan websitenya.

$data['getBarang'] = $model->getBarang();

Kode tersebut berfungsi untuk memanggil function getBarang() yg terdapat pada model Barang_model.php

selanjutnya kode view()

echo view('header_view', $data);
echo view('barang_view', $data);
echo view('footer_view', $data);

nah pada fungsi view di controller kita memakai 3 buah view yaitu header_view, barang_view, dan footer_view :

  1. header_view nanti berisi tentang  navigasi pada tag html
  2. barang_view berisi tentang table barang pada html
  3. dan footer_view berisi bagian footer bawah website

3. Lalu terakhir buat lah sebuah file view header_view.php, barang_view.php, dan footer_view.php , nah pada tampilannya kita menggunakan bootstrap 4 sebagai tampilan utamanya agar terlihat lebih rapih dan bagus :

disini kita tidak download file Bootstrapnya melainkan via online CDN jadi siapkan internet untuk mengikuti tutorial nya

berikut adalah kode header_view.php :

<!doctype html>
<html lang="en">
  <head>
    <title><?= $title;?></title>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
  </head>
  <body>
    <nav class="navbar navbar-expand-sm navbar-dark bg-info">
        <div class="container">
            <a class="navbar-brand" href="<?= base_url();?>">Data Barang Toko Codekop</a>
            <button class="navbar-toggler d-lg-none" type="button" data-toggle="collapse" data-target="#collapsibleNavId" aria-controls="collapsibleNavId"
                aria-expanded="false" aria-label="Toggle navigation"></button>
        </div>
    </nav>

berikut untuk kode footer_view.php :

    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
  </body>
</html>

dan untuk barang_view.php berfungsi untuk menampikan data barang berikut kodenya :

<div class="container pt-5">
    <a href="<?= base_url('barang/tambah');?>" class="btn btn-success mb-2">Tambah Data</a>
    <div class="card">
        <div class="card-header bg-info text-white">
            <h4 class="card-title">Data Barang</h4>
        </div>
        <div class="card-body">
            <div class="table-responsive">
                <table class="table table-bordered table-striped">
                    <thead>
                        <tr>
                            <th>No.</th>
                            <th>Nama Barang</th>
                            <th>Qty</th>
                            <th>Harga Beli</th>
                            <th>Harga Jual</th>
                            <th>Aksi</th>
                        </tr> 
                    </thead>
                    <tbody>
                        <?php $no=1; foreach($getBarang as $isi){?>
                            <tr>
                                <td><?= $no;?></td>
                                <td><?= $isi['nama_barang'];?></td>
                                <td><?= $isi['qty'];?></td>
                                <td>Rp<?= number_format($isi['harga_beli']);?>,-</td>
                                <td>Rp<?= number_format($isi['harga_jual']);?>,-</td>
                                <td>
                                    <a href="<?= base_url('barang/edit/'.$isi['id_barang']);?>" 
                                    class="btn btn-success">
                                    Edit</a>
                                    <a href="<?= base_url('barang/hapus/'.$isi['id_barang']);?>" 
                                    onclick="javascript:return confirm('Apakah ingin menghapus data barang ?')"
                                    class="btn btn-danger">
                                    Hapus</a>

                                </td>
                            </tr>
                        <?php $no++;}?>
                    </tbody>  

                </table>
            </div>
        </div>
    </div>
</div>

Kemudian Coba testing project kita ke url :

http://localhost:8080/barang

hasilnya seperti gambar berikut :

   


" Ayo berjuang, kita telah memasuki langkah Create, Update, Delete dengan CI 4 "

# step ke 4 (empat) membuat Create data pada tabel barang :

1. step pertama masih kita gunakan file Controller Barang.php, pada folder app/Controllers, pada step ini kita membuat fungsi baru untuk menampilkan tambah data barang, berikut kode Barang.php ketika ditambahkan fungsi baru yaitu function tambah() :

<?php 
namespace App\Controllers;
use CodeIgniter\Controller;
use App\Models\Barang_model;

class Barang extends Controller
{
    public function index()
    {
        $model = new Barang_model;
        $data['title']     = 'Data Barang';
        $data['getBarang'] = $model->getBarang();
        echo view('header_view', $data);
        echo view('barang_view', $data);
        echo view('footer_view', $data);
    }

    public function tambah()
    {
        $data['title']     = 'Tambah Data Barang';
        echo view('header_view', $data);
        echo view('tambah_view', $data);
        echo view('footer_view', $data);
    }
}

2. step 2 lalu sekarang buat file tambah_view pada folder app/Views dengan isi kode berikut :

<div class="container p-5">
    <a href="<?= base_url('barang');?>" class="btn btn-secondary mb-2">Kembali</a>
    <div class="card">
        <div class="card-header bg-info text-white">
            <h4 class="card-title">Tambah Data Barang</h4>
        </div>
        <div class="card-body">
            <form method="post" action="<?= base_url('barang/add');?>">
                <div class="form-group">
                    <label for="">Nama Barang</label>
                    <input type="text" name="nama" class="form-control" required>
                </div>
                <div class="form-group">
                    <label for="">Qty</label>
                    <input type="number" name="qty" class="form-control" required>
                </div>
                <div class="form-group">
                    <label for="">Harga Beli</label>
                    <input type="number" name="beli" class="form-control" required>
                </div>
                <div class="form-group">
                    <label for="">Harga Jual</label>
                    <input type="number" name="jual" class="form-control" required>
                </div>
                <button class="btn btn-success">Tambah Data</button>
            </form>
            
        </div>
    </div>
</div>

3. step 3 lalu membuat function add() untuk insert data kedalam database, dengan cara kita ke file Controller Barang.php :

<?php 
namespace App\Controllers;
use CodeIgniter\Controller;
use App\Models\Barang_model;

class Barang extends Controller
{
    public function index()
    {
        $model = new Barang_model;
        $data['title']     = 'Data Barang';
        $data['getBarang'] = $model->getBarang();
        echo view('header_view', $data);
        echo view('barang_view', $data);
        echo view('footer_view', $data);
    }

    public function tambah()
    {
        $data['title']     = 'Tambah Data Barang';
        echo view('header_view', $data);
        echo view('tambah_view', $data);
        echo view('footer_view', $data);
    }

    public function add()
    {
        $model = new Barang_model;
        $data = array(
            'nama_barang' => $this->request->getPost('nama'),
            'qty'         => $this->request->getPost('qty'),
            'harga_beli'  => $this->request->getPost('beli'),
            'harga_jual'  => $this->request->getPost('jual')
        );
        $model->saveBarang($data);
        echo '<script>
                alert("Sukses Tambah Data Barang");
                window.location="'.base_url('barang').'"
            </script>';

    }
}

 4. lalu step 4 buat function saveBarang() untuk fungsi insert data ke db pada Model Barang_model.php , di folder app/Models :

<?php 
namespace App\Models;
use CodeIgniter\Model;
 
class Barang_model extends Model
{
    protected $table = 'barang';
     
    public function getBarang($id = false)
    {
        if($id === false){
            return $this->findAll();
        }else{
            return $this->getWhere(['id_barang' => $id]);
        }   
    }

    public function saveBarang($data)
    {
        $builder = $this->db->table($this->table);
        return $builder->insert($data);
    }
 
}

Setelah selesai, kita coba testing untuk tambah data barangnya yang memiliki tampilan berikut :

Lalu kita ujicoba insert data barangnya :

   

Jika Berhasil data akan bertambah :

   


" Wow, Gak sadar sudah bisa create barang, ayo berjuang ke langkah berikutnya "

#step 5 (kelima) Membuat Update / Edit Pada Tabel barang :

pada step ke 5 ini kita akan belajar membuat update / edit tabel barang pada CodeIgniter 4 

1. step pertama tetap kita gunakan file Controller Barang.php, pada folder app/Controllers, pada step ini kita membuat fungsi baru untuk menampilkan edit data barang, berikut kode Barang.php ketika ditambahkan fungsi baru yaitu function edit() :

<?php 
namespace App\Controllers;
use CodeIgniter\Controller;
use App\Models\Barang_model;

class Barang extends Controller
{
    public function index()
    {
        $model = new Barang_model;
        $data['title']     = 'Data Barang';
        $data['getBarang'] = $model->getBarang();
        echo view('header_view', $data);
        echo view('barang_view', $data);
        echo view('footer_view', $data);
    }

    public function tambah()
    {
        $data['title']     = 'Tambah Data Barang';
        echo view('header_view', $data);
        echo view('tambah_view', $data);
        echo view('footer_view', $data);
    }

    public function add()
    {
        $model = new Barang_model;
        $data = array(
            'nama_barang' => $this->request->getPost('nama'),
            'qty'         => $this->request->getPost('qty'),
            'harga_beli'  => $this->request->getPost('beli'),
            'harga_jual'  => $this->request->getPost('jual')
        );
        $model->saveBarang($data);
        echo '<script>
                alert("Sukses Tambah Data Barang");
                window.location="'.base_url('barang').'"
            </script>';

    }

    public function edit($id)
    {
        $model = new Barang_model;
        $getBarang = $model->getBarang($id)->getRow();
        if(isset($getBarang))
        {
            $data['barang'] = $getBarang;
            $data['title']  = 'Edit '.$getBarang->nama_barang;

            echo view('header_view', $data);
            echo view('edit_view', $data);
            echo view('footer_view', $data);

        }else{

            echo '<script>
                    alert("ID barang '.$id.' Tidak ditemukan");
                    window.location="'.base_url('barang').'"
                </script>';
        }
    }
}

pada function edit($id) berfungsi untuk menampilkan data pada form edit barang nanti.

  • disini kita buat parameter if isset $getBarang, yang artinya jika parameter $id / atau id_barang valid maka dapat diedit,
  • lalu sebaliknya jika tidak valid maka url itu akan melempar kembali ke home, data barang, karena id barang tidak ditemukan.

note : logika edit data ini saya gunakan untuk mencegah orang yang memodifikasi tangkapan id pada url.

2. step kedua lalu kita akan buat view edit_view.php, untuk tampilan editnya pada folder app/Views dan isi kode berikut :

<div class="container p-5">
    <a href="<?= base_url('barang');?>" class="btn btn-secondary mb-2">Kembali</a>
    <div class="card">
        <div class="card-header bg-info text-white">
            <h4 class="card-title">Edit Barang : <?= $barang->nama_barang;?></h4>
        </div>
        <div class="card-body">
            <form method="post" action="<?= base_url('barang/update');?>">
                <div class="form-group">
                    <label for="">Nama Barang</label>
                    <input type="text" value="<?= $barang->nama_barang;?>" name="nama" required class="form-control">
                </div>
                <div class="form-group">
                    <label for="">Qty</label>
                    <input type="number" value="<?= $barang->qty;?>" name="qty" required class="form-control">
                </div>
                <div class="form-group">
                    <label for="">Harga Beli</label>
                    <input type="number" value="<?= $barang->harga_beli;?>" name="beli" required class="form-control">
                </div>
                <div class="form-group">
                    <label for="">Harga Jual</label>
                    <input type="number" value="<?= $barang->harga_jual;?>" name="jual" required class="form-control">
                </div>
                <input type="hidden" value="<?= $barang->id_barang;?>" name="id_barang">
                <button class="btn btn-success">Edit Data</button>
            </form>
            
        </div>
    </div>
</div>

3. step 3 lalu membuat function update() untuk update data kedalam database, dengan cara kita ke file Controller Barang.php :

<?php 
namespace App\Controllers;
use CodeIgniter\Controller;
use App\Models\Barang_model;

class Barang extends Controller
{
    public function index()
    {
        $model = new Barang_model;
        $data['title']     = 'Data Barang';
        $data['getBarang'] = $model->getBarang();
        echo view('header_view', $data);
        echo view('barang_view', $data);
        echo view('footer_view', $data);
    }

    public function tambah()
    {
        $data['title']     = 'Tambah Data Barang';
        echo view('header_view', $data);
        echo view('tambah_view', $data);
        echo view('footer_view', $data);
    }

    public function add()
    {
        $model = new Barang_model;
        $data = array(
            'nama_barang' => $this->request->getPost('nama'),
            'qty'         => $this->request->getPost('qty'),
            'harga_beli'  => $this->request->getPost('beli'),
            'harga_jual'  => $this->request->getPost('jual')
        );
        $model->saveBarang($data);
        echo '<script>
                alert("Sukses Tambah Data Barang");
                window.location="'.base_url('barang').'"
            </script>';

    }

    public function edit($id)
    {
        $model = new Barang_model;
        $getBarang = $model->getBarang($id)->getRow();
        if(isset($getBarang))
        {
            $data['barang'] = $getBarang;
            $data['title']  = 'Edit '.$getBarang->nama_barang;

            echo view('header_view', $data);
            echo view('edit_view', $data);
            echo view('footer_view', $data);

        }else{

            echo '<script>
                    alert("ID barang '.$id.' Tidak ditemukan");
                    window.location="'.base_url('barang').'"
                </script>';
        }
    }

    public function update()
    {
        $model = new Barang_model;
        $id = $this->request->getPost('id_barang');
        $data = array(
            'nama_barang' => $this->request->getPost('nama'),
            'qty'         => $this->request->getPost('qty'),
            'harga_beli'  => $this->request->getPost('beli'),
            'harga_jual'  => $this->request->getPost('jual')
        );
        $model->editBarang($data,$id);
        echo '<script>
                alert("Sukses Edit Data Barang");
                window.location="'.base_url('barang').'"
            </script>';

    }

}

4. lalu step 4 buat function editBarang() untuk fungsi update data ke db pada Model Barang_model.php , di folder app/Models :

<?php 
namespace App\Models;
use CodeIgniter\Model;
 
class Barang_model extends Model
{
    protected $table = 'barang';
     
    public function getBarang($id = false)
    {
        if($id === false){
            return $this->findAll();
        }else{
            return $this->getWhere(['id_barang' => $id]);
        }   
    }

    public function saveBarang($data)
    {
        $builder = $this->db->table($this->table);
        return $builder->insert($data);
    }

    public function editBarang($data,$id)
    {
        $builder = $this->db->table($this->table);
        $builder->where('id_barang', $id);
        return $builder->update($data);
    }
 
}

Setelah selesai, kita coba testing edit data barangnya yang memiliki tampilan berikut dengan edit nama barang Bola Voli  dan ganti dengan Bola Kaki :

lalu jika berhasil diupdate, akan berganti nama barangnya :

   


" Yosh !! kita telah berjuang sampai sini, gass ke langkah terakhir "

#step ke 6 lalu kita buat delete / hapus pada tabel barang :

1. step pertama tetap kita gunakan file Controller Barang.php, pada folder app/Controllers, pada step ini kita membuat fungsi baru untuk menghapus barang pada db, berikut kode Barang.php ketika ditambahkan fungsi baru yaitu function hapus() :

<?php 
namespace App\Controllers;
use CodeIgniter\Controller;
use App\Models\Barang_model;

class Barang extends Controller
{
    public function index()
    {
        $model = new Barang_model;
        $data['title']     = 'Data Barang';
        $data['getBarang'] = $model->getBarang();
        echo view('header_view', $data);
        echo view('barang_view', $data);
        echo view('footer_view', $data);
    }

    public function tambah()
    {
        $data['title']     = 'Tambah Data Barang';
        echo view('header_view', $data);
        echo view('tambah_view', $data);
        echo view('footer_view', $data);
    }

    public function add()
    {
        $model = new Barang_model;
        $data = array(
            'nama_barang' => $this->request->getPost('nama'),
            'qty'         => $this->request->getPost('qty'),
            'harga_beli'  => $this->request->getPost('beli'),
            'harga_jual'  => $this->request->getPost('jual')
        );
        $model->saveBarang($data);
        echo '<script>
                alert("Sukses Tambah Data Barang");
                window.location="'.base_url('barang').'"
            </script>';

    }

    public function edit($id)
    {
        $model = new Barang_model;
        $getBarang = $model->getBarang($id)->getRow();
        if(isset($getBarang))
        {
            $data['barang'] = $getBarang;
            $data['title']  = 'Edit '.$getBarang->nama_barang;

            echo view('header_view', $data);
            echo view('edit_view', $data);
            echo view('footer_view', $data);

        }else{

            echo '<script>
                    alert("ID barang '.$id.' Tidak ditemukan");
                    window.location="'.base_url('barang').'"
                </script>';
        }
    }

    public function update()
    {
        $model = new Barang_model;
        $id = $this->request->getPost('id_barang');
        $data = array(
            'nama_barang' => $this->request->getPost('nama'),
            'qty'         => $this->request->getPost('qty'),
            'harga_beli'  => $this->request->getPost('beli'),
            'harga_jual'  => $this->request->getPost('jual')
        );
        $model->editBarang($data,$id);
        echo '<script>
                alert("Sukses Edit Data Barang");
                window.location="'.base_url('barang').'"
            </script>';
    }

    public function hapus($id)
    {
        $model = new Barang_model;
        $getBarang = $model->getBarang($id)->getRow();
        if(isset($getBarang))
        {
            $model->hapusBarang($id);
            echo '<script>
                    alert("Hapus Data Barang Sukses");
                    window.location="'.base_url('barang').'"
                </script>';

        }else{

            echo '<script>
                    alert("Hapus Gagal !, ID barang '.$id.' Tidak ditemukan");
                    window.location="'.base_url('barang').'"
                </script>';
        }
    }

}

pada function hapus($id) berfungsi untuk hapus data pada tabel barang.

  • disini kita buat parameter if isset $getBarang, yang artinya jika parameter $id / atau id_barang valid maka dapat dihapus,
  • lalu sebaliknya jika tidak valid maka url itu akan melempar kembali ke home dan gagal dihapus data barangnya, karena id barang tidak ditemukan.

note : logika hapus ini sama dengan edit data, ini saya gunakan untuk mencegah orang yang memodifikasi tangkapan id pada url.

2. lalu step 2  buat function hapusBarang() untuk fungsi hapus data tabel pada Model Barang_model.php , di folder app/Models :

<?php 
namespace App\Models;
use CodeIgniter\Model;
 
class Barang_model extends Model
{
    protected $table = 'barang';
     
    public function getBarang($id = false)
    {
        if($id === false){
            return $this->findAll();
        }else{
            return $this->getWhere(['id_barang' => $id]);
        }   
    }

    public function saveBarang($data)
    {
        $builder = $this->db->table($this->table);
        return $builder->insert($data);
    }

    public function editBarang($data,$id)
    {
        $builder = $this->db->table($this->table);
        $builder->where('id_barang', $id);
        return $builder->update($data);
    }


    public function hapusBarang($id)
    {
        $builder = $this->db->table($this->table);
        return $builder->delete(['id_barang' => $id]);
    }
 
}

Horee, selesai, nah sekarang langkah terakhir kita coba testing hapus data nya yang kita hapus disini nama barang Bola Basket :

Lalu jika sukses, nama barang Bola Basket, akan hilang :

 

Note :

Untuk mengganti halaman root utama atau default url dari http://localhost:8080/barang, menjadi http://localhost:8080   anda dapat mengubahnya dengan cara mengganti router controller default nya pada folder app/Config/Routes.php lalu cari kode berikut :

$routes->get('/', 'Home::index');

dan ubah menjadi :

$routes->get('/', 'Barang::index');

Lalu buka browser pada url :

http://localhost:8080/

Selesai ..

" Selamat kita telah menyelesaikan Tutorial CRUD CodeIgniter 4 Lengkap Untuk Pemula "

Akhir kata :

Pembahasan ini untuk tutorial lengkap crud CI4 untuk pemula, dimulai dari pengenalan apa itu CodeIgniter 4, sampai membuat Aplikasi Crud sederhana dengan menggunakan Bootstrap, dan mengkoneksikan dengan database.

Terima kasih sudah berkunjung, semoga tutorial ini bermanfaat, mohon maaf bila ada salah salah kata, pada pembuatan tutorial kali ini. salam koding.

Source Code : https://github.com/fauzan1892/crud-basic-ci4

 



Fauzan Falah

Penulis https://codekop.com/ , http://maswin.id/ | Github : https://github.com/fauzan1892/ | portfolio : https://fauzan.codekop.com/

Profil Penulis Semua Postingan


Komentar