Tutorial CRUD (Create, Read, Update dan Delete) Dengan CodeIgniter – Part 2

Kembali lagi bersama saya untuk melanjutkan tutorial CRUD menggunakan CodeIgniter. Pertama-tama saya ingin mengucapkan permintaan maaf karena kelanjutan tutorial ini yang cukup lama, hal tersebut dikarenakan kesibukan penulis di dalam perkuliahan dan juga kerja. Sekali lagi saya mohon maaf dan juga saya ingin berterima kasih terhadap antusias pembaca dari tutorial yang saya tulis, saya sangat mengapresiasinya.

Artikel Lanjutan Dari : Tutorial CRUD di Codeigniter Part 1
Untuk selanjutnya, mari kita lanjut belajar menggunakan codeigniter yakni untuk melakukan update dan juga delete. Sebelum kita memulainya, silahkan download terlebih dahulu file tutorial dari part 1 melalui link ini : Link Download Tutorial Part 1 atau jika ingin kembali membaca tutorial tersebut bisa melalui ini Tutorial CodeIgniter Part 1.
Kita perlu mengubah sedikit code pada file products_view.php yang ada di dalam folder file sehingga link untuk menambah produk tetap muncul meskipun sudah ada produk yang disimpan di dalam database.
<?php 
   $jumlahProduk = $listProducts->num_rows(); //$listProduct berasal dari data yang dilempar dari controller, yaitu $data['listProducts']. num_rows() digunakan untuk menghitung jumlah baris yang dimiliki ketika kita melakukan select dari database
  ?>
   <a href="<?= base_url() ?>index.php/products/addProduct">Tambah Produk</a>
  <?php
            if($jumlahProduk > 0){ //Apabila data produk yang ada di dalam database lebih dari 0 maka baru ditampilkan
  ?>
   <!-- Kalau ada datanya, maka kita akan tampilkan dalam table -->
   <h1>Products List</h1>
   <table border="1">
    <thead>
     <tr>
      <th>No. </th>
      <th>Product ID</th>
      <th>Product Name</th>
      <th>Stock(s)</th>
      <th>Action</th>
     </tr>
    </thead>
File : views/products_view.php
Dengan validasi tersebut maka kita akan menampilkan list produk apabila sudah terdapat di dalam database, apabila di dalam database / table msproduct tersebut masih kosong tidak akan ditampilkan.
Selanjutnya adalah menambahkan view untuk melakukan update terhadap produk tersebut, pada tutorial sebelumnya kita sudah menambahkan link yang akan digunakan untuk melakukan update produk tersebut sehingga kita hanya perlu mengubah bagian controller untuk menerima parameter yang dilemparkan dari view produk untuk melakukan update
<a href="index.php/products/updateProduct/productId ?>">Update</a>
File : views/products_view.php
Sekarang kita akan mengubah bagian controller yaitu fungsi updateProduct untuk menerima parameter yang dikirimkan melalui view tersebut dan kemudian mengirimkannya ke model untuk mendapatkan informasi mengenai produk yang akan diupdate
public function updateProduct($productId) //Apabila kita menambahkan parameter seperti ini, maka kita menggunakan method GET untuk mengirimkan parameter dari view ke controller
 {
  //Function yang dipanggil ketika ingin melakukan update produk kemudian menampilkan update_product_view
        $data['product'] = $this->products_model->getProduct($productId); //Melakukan pemanggilan fungsi getProduct yang ada di dalam products_model untuk mendapatkan informasi / data mengenai produk berdasarkan productId yang dikirimkan
        
        $this->load->view('update_product_view', $data); //menampilkan view 'update_product_view' dan juga passing data dengan nama $data(Bentuknya array) yang berisi 'product'
 }
File : controller/products.php
Setelah bagian controller selesai diubah, maka kita akan melakukan pengeditan terhadap fungsi getProduct yang ada pada file products_model.php yang ada di folder models untuk menerima parameter yang telah dikirimkan dari controller untuk memperoleh data sesuai dengan productId yang diterima oleh model
function getProduct($id)
 {
  //select produk berdasarkan id yang dimiliki 
        $this->db->where('productId', $id); //Akan melakukan select terhadap row yang memiliki productId sesuai dengan productId yang telah dipilih
        $this->db->select("*");
        $this->db->from("msProduct");
        
        return $this->db->get();
 }
File : models/products_model.php
Setelah kita selesai melakukan perubahan terhadap controller dan juga modelnya maka kita akan membuat view yang digunakan untuk menampilkan halaman update dari produk yang telah kita pilih
<!-- File update_product_view.php -->
<html>
 <head>
  <title>CRUD dengan CodeIgniter</title>
 </head>
 <body>
  <h1>Update Product</h1>
        <?php
            //Kita akan melakukan looping terhadap variable $product yang telah dikirimkan melalui controller
            foreach($product->result() as $detail){
        ?>
  <form method="post" action="<?= base_url() ?>index.php/products/updateProductDb">
   <!-- action merupakan halaman yang dituju ketika tombol submit dalam suatu form ditekan -->
            <input type="hidden" value="<?php echo $detail->productId; ?>" name="productId" />
   <input type="text" placeholder="Product Name" name="productName" value="<?php echo $detail->productName; ?>" /> <!-- Value akan diisi berdasarkan data yang sudah ada di database, $detail->productName disini maksudnya adalah menunjuk productName yang merupakan attribute yang ada di table msProduct pada database -->
   <input type="text" placeholder="Stock" name="stock" value="<?php echo $detail->stock; ?>" /> <!-- Sama seperti di atas, hanya saja disini kita menampilkan stok -->
   <input type="submit" value="Update" />
  </form>
        <?php
            }    
        ?>
 </body>
</html>
File : views/update_product_view.php
Setelah kita menyelesaikan bagian view untuk melakukan update produk, yang selanjutnya kita harus lakukan adalah mengubah fungsi updateProductDb() yang ada di controller products
public function updateProductDb()
 {
  //Function yang dipanggil ketika ingin melakukan update terhadap produk yang ada di dalam database
        $data = array(
     'productName' => $this->input->post('productName'), //Didapatkan dari form yang disubmit pada file update_product_view.php
     'stock' => $this->input->post('stock') //Didapatkan dari form yang disubmit pada file update_product_view.php
    );
        $condition['productId'] = $this->input->post('productId'); //Digunakan untuk melakukan validasi terhadap produk mana yang akan diupdate nantinya
        
  $this->products_model->updateProduct($data, $condition); //passing variable $data ke products_model

  redirect('products'); //redirect page ke halaman utama controller products
 }
File : controller/products.php
Lanjut lagi ke bagian model untuk menghandle data yang akan di update ke database, saya melakukan perubahan terhadap parameter yang diterima oleh fungsi updateProduct menjadi $data dan $condition yang tadinya menggunakan $id karena kita membutuhkan 2 parameter yang digunakan untuk mengupdate data suatu produk
function updateProduct($data, $condition)
 {
  //update produk
        $this->db->where($condition); //Hanya akan melakukan update sesuai dengan condition yang sudah ditentukan
        $this->db->update('msProduct', $data); //Melakukan update terhadap table msProduct sesuai dengan data yang telah diterima dari controller
 }
File : models/products_model.php
Setelah fungsi pada model selesai maka kita telah memiliki fitur update pada website sederhana milik kita :) .
Mari kita lanjutkan dengan delete, sama seperti update sebelumnya, kita sudah memiliki link yang akan digunakan untuk melakukan delete suatu produk pada view yang kita miliki
<a href="<?= base_url() ?>index.php/products/deleteProductDb/<?= $row->productId ?>">Delete</a>
File : views/products_view.php
Kita perlu mengubah fungsi deleteProductDb yang ada pada controller products sehingga dapat mengirimkan productId mana yang akan di delete dari database nantinya
public function deleteProductDb($productId)
 {
  //Function yang dipanggil ketika ingin melakukan delete produk dari database
        $this->products_model->deleteProduct($productId); //Memanggil fungsi deleteProduct yang ada pada model products_model dan mengirimkan parameter yaitu productId yang akan di delete
        
        redirect('products'); //redirect page ke halaman utama controller products
 }
File : controller/products.php
Dan tahap terakhir adalah melakukan perubahan pada fungsi deleteProduct yang ada pada model products_model.php untuk menghandle productId yang diterima dari controller untuk melakukan delete pada database
function deleteProduct($id)
 {
  //delete produk berdasarkan id
        $this->db->where('productId', $id);
        $this->db->delete('msProduct');
 }
File : models/products_model.php
Sekarang kita sudah menyelesaikan tahap terakhir dari tutorial ini yakni melakukan update dan delete data menggunakan codeigniter. Semoga tutorial ini bisa bermanfaat bagi kita semua. Sekali lagi saya ucapkan terima kasih atas perhatiannya :)
Bila ada yang ingin bertanya boleh comment di bawah atau menghubungi saya lewat email…

Tutorial CRUD (Create, Read, Update dan Delete) Dengan CodeIgniter – Part 1


Pada kesempatan kali ini kita akan membahas bagaimana membuat CRUD (Create, Read, Update, dan Delete) enggunakan Framework CodeIgniter. Kita akan belajar bagaimana melihat list produk dan menambah / menghapus produk yang dimiliki oleh suatu toko.
Pertama-tama, kita membutuhkan database untuk menyimpan data-data kita. Saya sudah menyiapkan sebuah database yang bernama db_product, di dalamnya terdapat sebuah table msProduct yang terdiri dari field / attribute productId, productName, stock. File database bisa pembaca download melalui link ini : db_toko.sql
Struktur Folder yang akan kita buat :
crud_ci -> nama folder
– application
– – controllers
– – – products.php -> berada di dalam folder controllers
– – models
– – – products_model.php -> berada di dalam folder models
– – views
– – – products_view.php -> berada di dalam folder views untuk tampilan list produk
– – – add_product_view.php -> berada di dalam folder views untuk tampilan saat insert produk
– – – update_product_view.php -> berada di dalam folder views untuk tampilan saat update produk
Karena kita membutuhkan koneksi ke database maka ada beberapa konfigurasi yang perlu kita lakukan :
Setting autoload.php yang ada di folder config untuk menentukan hal-hal apa saja yang di load setiap membuka suatu page (ada helper, library, dll silahkan lihat di user_guide codeigniter :) )
$autoload['libraries'] = array('database'); //library yang telah disediakan codeigniter untuk mempermudah kita dalam hal-hal yang berhubungan dengan database

$autoload['helper'] = array('url'); //helper untuk url, sehingga kita bisa menggunakan base_url(), base_url() ini nantinya akan menghasilkan root folder kalian, misal nya kalian menggunakan url "localhost/tokosaya", maka localhost/tokosaya adalah base_url() milik kalian
setelah selesai dengan config.php, maka kita akan berlanjut untuk setting file database.php yang ada di folder config
$db['default']['hostname'] = 'localhost'; //ini adalah nama host yang kita gunakan untuk menyimpan database kita, dibiarkan saja menggunakan localhost, soalnya kita menggunakan host sendiri yang ada di komputer milik
$db['default']['username'] = 'root'; //ini adalah username yang digunakan untuk mengakses database, defaultnya adalah root
$db['default']['password'] = ''; //password yang digunakan untuk mengakses database, nilai defaultnya kosong, jadi kalau tidak disetting, maka biarkan seperti itu saja
$db['default']['database'] = 'db_toko'; //nama database yang kita gunakan untuk aplikasi web ini, kali ini saya beri nama db_toko
Setelah semua konfigurasi dasar sudah selesai, maka kita berlanjut ke tahap berikutnya, yaitu membuat controller yang digunakan untuk menghandle request halaman dari user. Kita buat file products.php kemudian disimpan di dalam folder controllers (application/controllers/products.php). File products.php ini akan memiliki struktur seperti ini :
products.php :
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Products extends CI_Controller  {
 function __construct(){
  parent::__construct();
  $this--->load->model("products_model"); //constructor yang dipanggil ketika memanggil products.php untuk melakukan pemanggilan pada model : products_model.php yang ada di folder models
 }

 public function index()
 {
  //Function yang digunakan untuk menampilkan view products_view.php
  $data['listProducts'] = $this->products_model->getAllProducts(); //berisi dari return value pada function getAllProducts() di file models/products_model.php
  $this->load->view('products_view', $data); //menampilkan view 'products_view' dan juga passing data dengan nama $data(Bentuknya array) yang berisi 'listProducts'
 }

 public function addProduct()
 {
  //Function yang dipanggil ketika ingin melakukan add produk kemudian menampilkan add_product_view
 }

 public function addProductDb()
 {
  //Function yang dipanggil ketika ingin memasukan produk ke dalam database
 }

 public function updateProduct()
 {
  //Function yang dipanggil ketika ingin melakukan update produk kemudian menampilkan update_product_view
 }

 public function updateProductDb()
 {
  //Function yang dipanggil ketika ingin melakukan update terhadap produk yang ada di dalam database
 }

 public function deleteProductDb()
 {
  //Function yang dipanggil ketika ingin melakukan delete produk dari database
 }
}

/* Location: ./application/controllers/products.php */
Setelah controller sudah kita buat, kita akan membuat models yang akan kita gunakan dalam web kita kali ini. Saya beri nama products_model.php dan disimpan di dalam folder models (application/models/products_model.php)
products_model.php :
<?php
 //File products_model.php
 class Products_model extends CI_Model  {
  function __construct() { parent::__construct(); } function getAllProducts() {
  //select semua data yang ada pada table msProduct $this--->db->select("*");
  $this->db->from("msProduct");

  return $this->db->get();
 }

 function getProduct($id)
 {
  //select produk berdasarkan id yang dimiliki
 }

 function addProduct($data)
 {
  //untuk insert data ke database
 }

 function updateProduct($id)
 {
  //update produk berdasarkan id
 }

 function deleteProduct($id)
 {
  //delete produk berdasarkan id
 }
}
Selanjutnya kita akan membuat view untuk menampilkan produk yang kita miliki sesuai yang ada di dalam database. Apabila kita belum memiliki produk maka kita akan meminta user untuk menambah produk terlebih dahulu, hehehe :D
products_view.php :
<!-- File products_view.php -->
<html>
 <head>
  <title>CRUD dengan CodeIgniter</title>
 </head>
 <body>
  <?php
   $jumlahProduk = $listProducts->num_rows(); //$listProduct berasal dari data yang dilempar dari controller, yaitu $data['listProducts']. num_rows() digunakan untuk menghitung jumlah baris yang dimiliki ketika kita melakukan select dari database

   if($jumlahProduk == 0){
  ?>
   <!-- Kalau datanya masih kosong, kita harus melakukan add product -->
   <a href="<?= base_url() ?>index.php/products/addProduct">Tambah Produk</a>
  <?php
   }
   else {
  ?>
   <!-- Kalau ada datanya, maka kita akan tampilkan dalam table -->
   <h1>Products List</h1>
   <table border="1">
    <thead>
     <tr>
      <th>No. </th>
      <th>Product ID</th>
      <th>Product Name</th>
      <th>Stock(s)</th>
      <th>Action</th>
     </tr>
    </thead>
    <tbody>
     <?php
      //Kita akan melakukan looping sesuai dengan data yang dimiliki
      $i = 0; //nantinya akan digunakan untuk pengisian Nomor
      foreach ($listProducts->result() as $row) {
     ?>
     <tr>
      <td><?= $i ?></td>
      <td><?= $row->productId ?></td> <!-- karena berbentuk objek, maka kita menggunakan panah (->) untuk menunjuk field yang ada di database -->
      <td><?= $row->productName ?></td>
      <td><?= $row->stock ?></td>
      <td>
       <!-- Akan melakukan update atau delete sesuai dengan id yang diberikan ke controller -->
       <a href="<?= base_url() ?>products/updateProduct/<?= $row->productId ?>">Update</a>
       |
       <a href="<?= base_url() ?>products/deleteProductDb/<?= $row->productId ?>">Delete</a>
      </td>
     </tr>
     <?php
      }
     ?>
    </tbody>
   </table>
  <?php
   }
  ?>
 </body>
</html>
Setelah itu kita akan membuat halaman yang dapat digunakan untuk melakukan add produk, kita buat file baru dengan nama add_product_view.php dan disimpan di dalam folder views
add_product_view.php :
<!-- File add_product_view.php -->
<html>
 <head>
  <title>CRUD dengan CodeIgniter</title>
 </head>
 <body>
  <h1>Add New Product</h1>
  <form method="post" action="<?= base_url() ?>index.php/products/addProductDb">
   <!-- action merupakan halaman yang dituju ketika tombol submit dalam suatu form ditekan -->
   <input type="text" placeholder="Product Name" name="productName" />
   <input type="text" placeholder="Stock" name="stock" />
   <input type="submit" />
  </form>
 </body>
</html>
Untuk langkah selanjutnya, kita perlu mengubah file controller kita terlebih dahulu agar sesuai dengan yang kita inginkan, kita ubah function addProduct dan addProductDb
function addProduct :
 public function addProduct()
 {
  //Function yang dipanggil ketika ingin melakukan add produk kemudian menampilkan add_product_view
  $this->load->view('add_product_view');
 }
function addProductDb :
 public function addProductDb()
 {
  //Function yang dipanggil ketika ingin memasukan produk ke dalam database
  $data = array(
    'productName' => $this->input->post('productName'),
    'stock' => $this->input->post('stock')
    );
  $this->products_model->addProduct($data); //passing variable $data ke products_model

  redirect('products'); //redirect page ke halaman utama controller products
 }
Nah kalau sudah, maka kita perlu mengubah fungsi yang dimiliki oleh model kita. Tepatnya fungsi addProduct, fungsi tersebut akan menerima value atau nilai yang dilempar dari fungsi addProductDb pada controller products.php
function addProduct :
 function addProduct($data)
 {
  //untuk insert data ke database
  $this->db->insert('msProduct', $data);
 }
Kita sudah menyelesaikan proses untuk menambah suatu produk ke dalam database, silahkan dicoba :) . Di bagian selanjutnya kita akan belajar bagaimana cara melakukan update dan delete data yang ada pada database ini :)
File Tutorial bisa di download di sini : File Tutorial