Membuat CRUD sederhana menggunakan Codeigniter

Dalam membuat Create Read Update Delete (CRUD) menggunakan codeigniter memerlukan beberapa aplikasi untuk membuatnya, aplikasi yang diperlukan yaitu XAMPP, Visual Studio Code dan Chrome.

  1. Dalam memulai membuat CRUD, langkah pertama yang perlu disiapkan adalah membuat folder project yang nantinya akan digunakan untuk menampung semua kode CRUD.
  2. Untuk memulai project nya, buka visual studio code dan pilih folder project yang sudah dibuat, lalu buka terminal di visual studi code dan jalankan “composer create-project codeigniter4/starter . ” Code itu berfungsi untuk memulai project menggunakan codeigniter.
  3. Jika semua file yang diberikan codeigniter berhasil terpasang, jalankan “php spark serve” , kode itu berfungsi untuk menjalankan server codeigniter. Untuk nama server codeigniter akan diberikan link http://localhost:8080 ”
  4. Setelah itu buka XAMPP Control-Panel dan jalankan module Apache dan MySQL, untuk digunakan dalam masuk kedalam phpmyadmin, yang nantinya digunakan untuk membuat database
  5. Setelah itu kembali ke visual studio code, setelah itu kita gunakan file yang namanya .env yang gunanya untuk memulai koneksi ke database yang kita buat, pastikan username,password dan database suda sesuai.
  6. Setelah itu akses phpmyadmin dan buat database yang ingin dibuat, contohnya nama databasenya adalah produk dan nama database produk ini harus sesuai di file .env nya
  7. Kemudian kita akan membuat tabel databasenya menggunakan fitur migrasi, di codeigniter sudah diberikan folder dengan nama App, didalam folder App, kemudian masuk ke folder database dan di dalam folder database ada folder yang namanya migrations.
  8. Di folder migration kita akan membuat file migration baru, di terminal kita memulai migrations dengan cara “php spark make::migration nama_migration” lalu klik enter untuk membuat file migrationnya.
  9. Masuk ke file migration yang sudah kita buat, disana terdapat function yang berfungsi untuk membuat tabel di dalam database kita, untuk membuat tabel sesuai dengan kebutuhan kita dengan cara seperti contoh berikut

$this->forge->addField([

‘id’ => [

‘type’   => ‘INT’,

‘constraint’ => 11,

‘unsigned’ => true,

‘auto_increment’ => true,

]

]);

Codingan diatas fungsinya untuk memulai membuat database yang kita perlukan, type berfungsi untuk menentukan tipe data apa yang digunakan, constraint berfungsi untuk membatasi nilai dalam suatu kolom, unsigned digunakan untuk memperoleh angka positif dan auto_increment fungsinya untuk menambahkan data id secara otomatis.

Setelah membuat tabel database, kita gunakan codingan berikut

$this->forge->addKey(‘id’, true);

Fungsinya untuk menetapkan primary key pada kolom id pada tabel dan artinya kolom id harus unik dan tidak boleh kosong

 

$this->forge->createTable(‘produk’);

Fungsinya untuk membuat tabel baru yang bernama produk pada database

 

  1. Setelah membuat tabel menggunakan migrasi yang kita buat model, untuk membuat model masih sama seperti membuat migration, menggunakan terminal dengan kode “php spark make::model nama_model”. Di dalam file berisikan codingan seperti contoh berikut

Protected $table                    = ‘produk’;

Berfungsi untuk menentukan bahwa model ini bekerja dengan tabel produk

 

Protected $primaryKey         = ‘id’;

Berfungsi untuk menentukan bahwa kolom id merupakan primary key

 

Protected $allowedFields     = [‘nama_produk’, ‘harga’, ‘stock’];

Berfungsi untuk menentukan bahwa kolom yang dapat dimasukkan atau diupdate;

 

Protected gunanya agar hanya dapat diakses di dalam class model terseubut dan class turunannya.

  1. Ketika model sudah dibuat sesuai dengan kebutuhan database, lanjut membuat controller yang gunanya untuk membuat codingan untuk Create, Read, Update dan Delete. Untuk membuat controller juga menggunakan terminal dengan kode “php spark make::controller nama_controller”.

Dalam file controller memiliki banyak function yang gunanya untuk membuat CRUD

  • Untuk menampilkan semua data produk dalam database gunakan codingan seperti berikut :

$data = [‘produk’ => $this->modelProduk->findAll()];

Fungsinya objek dari model akan digunakan untuk berinteraksi dengan database yang kita buat, dan “findAll()” fungsinya untuk mengambil semua data dari tabel yang ada di database

 

return view(‘index’, $data);

Fungsinya untuk menampilkan halaman tampilan pada folder view data variabel $data akan dikirim ke view sebagai array yang dapat digunakan untuk menampilkan data pada halaman view

  • Untuk menambahkan data dalam database, dalam file controller terdapat dua function yaitu create dan store

Untuk function create ini gunanya untuk nemapilkan form tambah data, untuk codingannya seperti berikut

return view (‘produk/create’);

codingan itu digunakan untuk menampilkan halaman form tambah data

 

Untuk function store gunanya untuk menyimpan data yang dimasukkan ke form tersimpan pada database, contoh codingannya seperti berikut

$this->produkModel->save([

            ‘nama_produk’ => $this->request->getPost(‘nama_produk’),

            ‘harga’ => $this->request->getPost(‘harga’),

            ‘stok’ => $this->request->getPost(‘stok’)

        ]);

        return redirect()->to(‘/produk’);

 

fungsi dari save() adalah untuk menyimpan data baru ke database, sehingga ketika form diisi dengan data baru, maka codingan diatas berguna untuk mengecek apakah data yang dimasukkan sudah sesuai dengan database atau apakah ada data yang masih kosong, jika ada data yang kosong dan tidak sesuai akan menampilakn error dan jika sudah data yang dimasukkan sudah sesuai maka, fungsi dari “return redirect()->to(‘/produk’)” adalah untuk mengembalikan ke halaman view utama untuk menampilkan dan memberi tahu bahwa data tersebut berhasil masuk.

  • Untuk edit juga memiliki dua function yaitu edit dan update, dan pada function ini berisikan $id, yang gunanya untuk memanggil data sesuai dengan id masing-masing. Untuk contoh codingannya seperti berikut

Untuk function edit

$produk = $this->modelProduk->find($id);

Fungsinya untuk memanggil data sesuai dengan id masing-masing

 

If(!$produk){

      Return redirect()->to(‘/produk’)->with(‘error’, ‘produk tidak ditemukan’);

}

 

Return view (‘edit’, [‘produk’ => $produk]);

Fungsi diatas berguna jika tidak ada id akan kembali ke halaman utama dengan menampilakn error, produk tidak ditemukan. Jika data tersebut ada, akan langsung menampilakn halaman edit.

Untuk update ini gunanya untuk menampilkan data sesuai id yang dipanggil. Untuk codingannya seperti berikut :

$this->produkModel->update($id, [

            ‘nama_produk’ => $this->request->getPost(‘nama_produk’),

            ‘harga’ => $this->request->getPost(‘harga’),

            ‘stok’ => $this->request->getPost(‘stok’)

        ]);

        return redirect()->to(‘/produk’);

fungsi codingan diatas adalah ketika masuk ke halaman edit sesuai id yang dipilih, maka function update ini akan menampilkan semua data sesuai dengan id nya, ketika sudah melakukan edit makan update() akan mengecek apakah data yang diedit sudah sesuai dengan database, jika tidak akan menampilkan error, jika sudah berhasil edit makan akan menampilkan halaman utama yang menampilkan data yang sudah diedit.

  • Untuk delete juga memanggil menggunakan $id , karena delete dilakukan untuk salah satu data yang ingin dihapus. Contoh codingan untuk delete, seperti berikut

$this->modelProduk->delete($id);

return redirect()->to(‘/produk’);

delete($id) digunakan untuk menghapus berdasarkan ID dan ketika berhasil menghapus akan diarahkan kembali ke halaman utama setelah aksi selesai dan menampilkan data yang sudah berhasil terhapus.

  1. Untuk memanggil dan menampilakn semua CRUD yang sudah dibut dalam controller perlu memanggil dan mendefinisikannya dalam route. File route terdapat pada folder App. Cara untuk memanggil controller yang kita buat yaitu dengan cara

$route->get(‘/produk’, ‘ProdukController::index’);

Fungsi codingan di atas adalah untuk memanggil file dalam folder produk dengan nama index, tidak semua route menggunakan method get, ada beberapa menggunakan method post,contohnya

$route->post(‘/edit/(:num)’, ‘ProdukController::edit/$1’);

Fungsinya ini memungkinkan untuk mengirimkan data edit produk melalui method post ke controller yang sesuai dengan id nya.

  1. Untuk membuat file view, itu dibuat sesuai dengan route yang sudah di definisikan sebelumnya,contohnya untuk halaman utama di definisikan dengan index, maka dalam view juga buatkan file dengan nama index. Untuk CRUD dalam view dapat diberikan contoh seperti berikut :
  • Untuk menampilakn tabel sesuai dengan database yang sudah dibuat dapan berikan kode seperti berikut :

<?php if (!empty($produk)) : ?>

<?php foreach ($produk as $key => $row) : ?>

<tr>

<td><?= $key + 1; ?></td>

<td><?= esc($row->nama_produk); ?></td> <!– Gunakan notasi objek –>

<td>Rp <?= number_format($row->harga, 0, ‘,’, ‘.’); ?></td>

<td><?= $row->stock; ?></td>

</tr>

<?php endforeach; ?>

<?php else : ?>

<tr>

<td colspan=”5″ class=”text-center”>Data tidak ditemukan</td>

</tr>

<?php endif; ?>

 

Pada codingan diatas dapat dikatakan jika data tidak kosong maka untuk setiap data produk akan menjadi data index dan data tersebut digunakan untuk menampilkan baris dalam tabel, sehingga data yang ditampilkan akan sesuai dengan urutan tabel dalam database. Pada tombol edit dan delete berisikan id , gunanya ketika memilih data yang ingin di edit akan sesuai dengan id dan menampilkan keseluruhan data, untuk delete juga menggunakan id untuk menghapus data sesuai dengan id.

  • Untuk form create juga haru sesuai dengan route yang dibuat, untuk dalam form data berisikan action=”<?= base_url(‘/store’) ?>” gunanya untuk menyambungkan dengan function store agar dapat melakukan penambahan data. Untuk setiap form harus berisikan name=”nama_tabel_database” itu berguna untuk mendefinisikan bahwa data yang ingin dimasukkan sesuai dengan urutan tabel dalam database.
  • Untuk form edit sama seperti create akan menampilakn halaman form namun bedanya dalam form edit menggunakan action=”<?= base_url(‘/update/’ . $produk->id) ?>” gunanya untuk menampilakn data sesuai dengan id yang dipanggil, dalam form edit juga berisikan value=”<?= $produk->nama_tabel_database ?>” fungsinya untuk menampilakn data sesuai dengan tabel dan id yang dipanggil agar mempermudah untuk melakukan edit.
  • Untuk delete tidak memerlukan file sendiri untuk melakukan penghapusan data, delete terdapat pada halaman index dan hanya berisikan codingan <?= base_url(‘/delete/’ . $row-id) ?> codingan ini berfungsi untuk melakukan penghapusan data sesuai dengan id yang dipanggil jika tidak memanggil dengan id akan terjadi error atau bahkan seluruh data dalam database dapat terhapus.