Tutorial CRUD CodeIgniter 4 Lengkap Untuk Pemula

TUTORIAL CodeIgniter 4 UPDATE VERSI 4.4.0

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.

Berikut Tutorial basic crud codeIgniter 4  :

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. Installasi CodeIgniter 4
  3. Membuat Aplikasi pertama dengan CodeIgniter 4
    1. Konsep Cara menampilkan View Halaman pada CI 4 ( Route, Controllers dan Views )
    2. Mengkoneksikan CodeIgniter 4 dengan Database
    3. Menampilkan data dari database ke view dengan tampilan Bootstrap 4 ( Read )
    4. Membuat Halaman Tambah dan Edit dan Fungsi CRUD
      1. Membuat Route
      2. Melakukan Insert Data ( Insert )
      3. Melakukan Update Data ( Update )
      4. Melakukan Delete Data ( Delete )
    5. Selesai

Masuk Ke tutorial :
I. 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.4 , bila anda masih menggunakan PHP < 7.4 disarankan untuk melakukan Update.

II. 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 terbaru 4.4.0 atau langsung saja ke link berikut : https://api.github.com/repos/codeigniter4/framework/zipball/v4.4.0 , 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

    Laragon Windows : C:\laragon\www

  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 :

    Screenshot 2023-08-30 205043.png

    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

    Untuk versi Laragon Windows hanya tinggal klik terminal pada aplikasi laragon anda :

    Screenshot 2023-08-30 205356.png

    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 :

    Screenshot 2023-08-30 205551.png

    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

    Screenshot 2023-08-30 205708.png

    lalu buka web browser anda dan ketik url :http://localhost:8080atau seperti gambar berikut :

    Screenshot 2023-08-30 205754.png


III. 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 :

Screenshot 2023-08-30 210055.png

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 Controllers, Models, Views, Library, Helper, Third Party dan lain-lain.
  • Folder Vendor yg berisi tentang modul system CodeIgniter 4 itu sendiri dan beberapa library bawaan juga yang diperlukan dari CodeIgniter 4.
  • 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.

3.1 Konsep Cara menampilkan View Halaman pada CI 4 ( Route, Controllers dan Views  )

  1. Membuat RouteHal yang dilakukan pertama ialah membuat Route, Route / Routing adalah proses menentukan arah atau rute url yang harus dilalui. Pada framework CI4 dan framework php lainnya, routing bertujuan untuk menentukan Controller mana yang harus merespon sebuah request, seperti url halaman yang kita ingin tuju dari function yang diatur dari Controller, ataupun ia bisa juga hanya berbentuk api / json, tergantung function Controller yang ingin kita buat

    Pada kali ini tugas Controller ialah untuk menampilkan halaman page yang kita buat  dan dengan file views sebagai html untuk tampilan halaman webnya, lalu berikut cara membuat route dengan membuka file app/Config/Routes.php dan tambahkan kode di bawah ini :

    $routes->get('halo', 'Halo::index');
    // get route url site_url/halo dengan class Halo dan function index pada Controller Halo.php
  2. Membuat Controllers
    Pada langkah ini, yang kita harus lakukan adalah bagaimana cara Controllers menampilkan view, dengan membuat 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';
    		return view('halo_view',$data);
    	}
    
    }
  3. Membuat ViewsLalu buatlah sebuah view dengan nama halo_view.php pada folder app/Views yang berisi html sebagai tampilan halaman web yang kita bangun, contoh isi file view dengan kode berikut :
    <!DOCTYPE html>
    <htmllang="en">
        <head>
            <metacharset="UTF-8">
            <metaname="viewport" content="width=device-width, initial-scale=1.0">
            <title><?= $title;?></title>
        </head>
        <body>
            <h1><?= $msg;?></h1>
        </body>
    </html>

    Keterangan :

    Diatas adalah contoh file html yang kita buat, $title dan $msg yang kita print berasal dari controller yang kita oper datanya ke dalam views

  4. Jalankan URLkemudian cek hasil kerja kita, dengan buka browser dan buka url berikut :

    http://localhost:8080/halo

    Jika berjalan maka terlihat seperti gambar berikut :

    Screenshot 2023-08-30 213953.png


3.2 Mengkoneksikan CodeIgniter 4 dengan Database

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 .


3.3 Menampilkan data dari database ke view dengan tampilan Bootstrap 4 ( Read ) :

Pada langkah ini, 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. Membuat RouteHal yang dilakukan pertama ialah membuat Route yang kita inginkan, untuk membuat url Read, kita dapat membuka file app/Config/Routes.php dan tambahkan kode di bawah ini :
    <?php
    
    use CodeIgniter\Router\RouteCollection;
    
    /**
     * @var RouteCollection $routes
     */
    // Home Barang
    $routes->get('barang', 'Barang::index');
  2. Membuat ModelsBuat 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.

  3. Membuat ControllersBuat 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
  4. Membuat ViewsLalu 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>
    <htmllang="en">
      <head>
        <title><?= $title;?></title>
        <!-- Required meta tags -->
        <metacharset="utf-8">
        <metaname="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    
        <!-- Bootstrap CSS -->
        <linkrel="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>
        <navclass="navbar navbar-expand-sm navbar-dark bg-info">
            <divclass="container">
                <aclass="navbar-brand" href="<?= base_url();?>">Data Barang Toko Codekop</a>
                <buttonclass="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 -->
        <scriptsrc="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
        <scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
        <scriptsrc="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 :

    <divclass="container pt-5">
        <ahref="<?= base_url('barang/tambah');?>" class="btn btn-success mb-2">Tambah Data</a>
        <divclass="card">
            <divclass="card-header bg-info text-white">
                <h4class="card-title">Data Barang</h4>
            </div>
            <divclass="card-body">
                <divclass="table-responsive">
                    <tableclass="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>
                                        <ahref="<?= base_url('barang/edit/'.$isi['id_barang']);?>" 
                                        class="btn btn-success">
                                        Edit</a>
                                        <ahref="<?= 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>
  5. Jalankan URLKemudian Coba testing project kita ke url :

    http://localhost:8080/barang

    hasilnya seperti gambar berikut :

3.4 Membuat Halaman Tambah dan Edit dan Fungsi CRUD

    1. Membuat Route

      Hal yang dilakukan membuat CRUD kita dapat mengedit dan menambah route yang kita buat tadi pada proses READ data dari database diatas, untuk membuat URL CRUD, kita dapat membuka file app/Config/Routes.php dan tambahkan kode di bawah ini :

      <?php
      
      use CodeIgniter\Router\RouteCollection;
      
      /**
       * @var RouteCollection $routes
       */
      // Home Barang
      $routes->get('barang', 'Barang::index');
      // Halaman Tambah
      $routes->get('barang/tambah', 'Barang::tambah');
      // Halaman Edit
      $routes->get('barang/edit/(:any)', 'Barang::edit/$1');
      // Proses CRUD
      // Insert
      $routes->post('barang/add', 'Barang::add');
      // Update
      $routes->post('barang/update', 'Barang::update');
      // Hapus
      $routes->get('barang/hapus/(:any)', 'Barang::hapus/$1');
    2. Melakukan Insert Data ( Create )  

      1. Langkah ini kita akan membuat halaman create barang, disini kita masih 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. Lalu sekarang buat file tambah_view.php pada folder app/Views dengan isi kode berikut :
        <divclass="container p-5">
            <ahref="<?= base_url('barang');?>" class="btn btn-secondary mb-2">Kembali</a>
            <divclass="card">
                <divclass="card-header bg-info text-white">
                    <h4class="card-title">Tambah Data Barang</h4>
                </div>
                <divclass="card-body">
                    <formmethod="post" action="<?= base_url('barang/add');?>">
                        <divclass="form-group">
                            <labelfor="">Nama Barang</label>
                            <inputtype="text" name="nama" class="form-control" required>
                        </div>
                        <divclass="form-group">
                            <labelfor="">Qty</label>
                            <inputtype="number" name="qty" class="form-control" required>
                        </div>
                        <divclass="form-group">
                            <labelfor="">Harga Beli</label>
                            <inputtype="number" name="beli" class="form-control" required>
                        </div>
                        <divclass="form-group">
                            <labelfor="">Harga Jual</label>
                            <inputtype="number" name="jual" class="form-control" required>
                        </div>
                        <buttonclass="btn btn-success">Tambah Data</button>
                    </form>
                    
                </div>
            </div>
        </div>
      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. Setelah itu 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);
            }
         
        }
      5. Setelah selesai, kita coba testing untuk tambah data barangnya yang memiliki tampilan berikut :

        Lalu kita ujicoba insert data barangnya :

        Jika Berhasil data akan bertambah :

    3. Melakukan Update data ( Update )

      Langkah ini ini kita akan belajar membuat update / edit tabel barang pada CodeIgniter 4

      1. Langkah 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. Langkah kedua lalu kita akan buat view edit_view.php, untuk tampilan editnya pada folder app/Views dan isi kode berikut :
        <divclass="container p-5">
            <ahref="<?= base_url('barang');?>" class="btn btn-secondary mb-2">Kembali</a>
            <divclass="card">
                <divclass="card-header bg-info text-white">
                    <h4class="card-title">Edit Barang : <?= $barang->nama_barang;?></h4>
                </div>
                <divclass="card-body">
                    <formmethod="post" action="<?= base_url('barang/update');?>">
                        <divclass="form-group">
                            <labelfor="">Nama Barang</label>
                            <inputtype="text" value="<?= $barang->nama_barang;?>" name="nama" required class="form-control">
                        </div>
                        <divclass="form-group">
                            <labelfor="">Qty</label>
                            <inputtype="number" value="<?= $barang->qty;?>" name="qty" required class="form-control">
                        </div>
                        <divclass="form-group">
                            <labelfor="">Harga Beli</label>
                            <inputtype="number" value="<?= $barang->harga_beli;?>" name="beli" required class="form-control">
                        </div>
                        <divclass="form-group">
                            <labelfor="">Harga Jual</label>
                            <inputtype="number" value="<?= $barang->harga_jual;?>" name="jual" required class="form-control">
                        </div>
                        <inputtype="hidden" value="<?= $barang->id_barang;?>" name="id_barang">
                        <buttonclass="btn btn-success">Edit Data</button>
                    </form>
                    
                </div>
            </div>
        </div>
      3. Langkah ketiga 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. Langkah keempat 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);
            }
         
        }
      5. 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 :

    4. Melakukan Delete data ( Delete )

      1. Untuk membuat delete / hapus pada tabel barang, Langkah 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. Langkah kedua 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]);
            }
         
        }
      3. 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/Routing.php lalu cari kode berikut :

public string $defaultController = 'Home';

dan ubah menjadi :

public string $defaultController = 'Barang';

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

 

https://www.codekop.com/read/tutorial-crud-codeigniter-4-lengkap-untuk-pemula-60.html