Membuat CRUD Dengan Codeigniter


Membuat CRUD Dengan Codeigniter – Pada artikel ini mari kita bahas cara membuat CRUD dengan Codeigniter. Seperti yang sudah dibahas pada artikel sebelumnya, CRUD merupakan singkatan dari Create, Read, Update dan Delete. CRUD memuat bagaimana membuat suatu fitur untuk menampilkan, menyimpan, mengubah dan menghapus data dari database.

Sebagai contoh, pada tutorial ini kita gunakan Library HTML2PDF yang bisa digunakan sampai versi PHP 7.2.8. Oleh karenanya sebelum mengikuti tutorial ini pastikan bahwa PHP yang terinstal pada PC Anda merupakan versi tersebut atau di bawahnya.

login bootstrap

Baca juga: Cara Membuat CRUD Dengan PHP Dan MySQL

Persiapan

Sebelum memulai kita perlu menyiapkan beberapa hal. Salah satunya adalah mengunduh Codeigniter di situs resminya. File ini berupa .7z yang nantinya perlu kita ekstrak.

Kemudian buat folder dengan nama terserah pada folder xampp/htdocs/. Misalnya kita beri nama crud_ci.

Copy dan paste framework Codeigniter pada folder yang sudah Anda buat tadi. Karena masih berupa file .7z, maka Anda perlu mengekstrak file framework Codeigniter pada folder xampp/htdocs/….

Langkah 1 – Membuat Database

Pertama-tama kita perlu membuat database baru dengan nama terserah Anda. Di dalam database ini kita buat tabel siswa dengan struktur tabel seperti berikut:

CREATE TABLE IF NOT EXISTS `siswa` (
  `nis` varchar(11) NOT NULL,
  `nama` varchar(50) NOT NULL,
  `jenis_kelamin` varchar(10) NOT NULL,
  `telp` varchar(15) NOT NULL,
  `alamat` text NOT NULL,
  PRIMARY KEY (`nis`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Langkah 2 – Konfigurasi

Tahap berikutnya adalah melakukan konfigurasi terlebih dahulu pada framework Codeigniter. Caranya adalah sebagai berikut.

Konfigurasi config.php

  1. Buka folder xampp/htdocs/crud_ci/application/config/
  2. Buka file config.php
  3. Cari kode $config[‘base_url’] = ”;. Lalu ubah kode tersebut menjadi $config[‘base_url’] = ‘http://localhost/crud_ci’;. Kode ini digunakan untuk mengatur baseurl.
  4. Cari kode $config[‘index_page’] = ‘index.php’; dan ubah menjadi $config[‘index_page’] = ”;. Kemudian simpan file config.php tersebut.

Konfigurasi autoload.php

Berikutnya kita lakukan konfigurasi pada file autoload.php. Cari file ini di xampp/htdocs/crud_ci/application/.

Berikutnya cari kode di bawah ini:

$autoload[‘libraries’] = array();

$autoload[‘helper’] = array();

Dan ubah menjadi:

$autoload[‘libraries’] = array(‘database’);

$autoload[‘helper’] = array(‘form’,’url’);

Kode di atas dipakai untuk memuat class database, form dan url. Setelah selesai mengedit simpan file tersebut.

Konfigurasi routes.php

Selesai melakukan konfigurasi pada file autoload.php, selanjutnya kita atur file routes.php. Cari kode $route[‘default_controller’] = ‘welcome’; dan ubah menjadi $route[‘default_controller’] = ‘siswa’;.

Kode tersebut digunakan untuk menset controller mana yang akan dimuat pertama kali. Untuk diketahui, Codeigniter mengatur default controller welcome. Dan kita ubah default controller tersebut menjadi main. Setelah selesai simpan perubahan tersebut.

Konfigurasi database.php

Langkah konfigurasi ini menjadi yang terakhir. Silakan buka file database.php.

Cari kode di bawah ini:

‘hostname’ => ‘localhost’,

‘username’ => ”,

‘password’ => ”,

‘database’ => ”,

Kemudian ganti menjadi seperti berikut:

‘hostname’ => ‘localhost’, // Nama host

‘username’ => ‘root’, // Username

‘password’ => ”, // Jika menggunakan password isi, jika tidak kosongkan saja

‘database’ => namadatabase, // Nama databasenya

Kode tersebut dipakai untuk koneksi ke database. Jangan lupa untuk menyimpan perubahan tersebut.

Langkah 3 – Setting Htaccess

Pada langkah ini kita buat URL pada website buatan kita lebih user friendly atau URL friendly. Sebab pengaturan default Codeigniter akan selalu menyisipkan ‘index.php’ setiap kita mengakses suatu function di controller. Dan kita hapus ‘index.php’ tersebut dengan bantuan htaccess.

Caranya buat file baru dengan nama .htaccess dan simpan pada folder xampp/htdocs/crud_ci/. Sedangkan dalam file tersebut tulis kode:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php/$1 [L]

Kode ini ditujukan untuk menghilangkan ‘index.php’ di atas.

Langkah 4 – Buat Model

Langkah selanjutnya adalah membuat model yang berisi fungsi untuk menampilkan seluruh data siswa pada tabel siswa. Caranya buat file baru dengan nama SiswaModel.php. Kemudian simpan di folder xampp/htdocs/crud_ci/application/models/.

Isi dari file tersebut adalah kode berikut:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class SiswaModel extends CI_Model {
  // Fungsi untuk menampilkan semua data siswa
  public function view(){
    return $this->db->get('siswa')->result();
  }
  
  // Fungsi untuk menampilkan data siswa berdasarkan NIS nya
  public function view_by($nis){
    $this->db->where('nis', $nis);
    return $this->db->get('siswa')->row();
  }
  
  // Fungsi untuk validasi form tambah dan ubah
  public function validation($mode){
    $this->load->library('form_validation'); // Load library form_validation untuk proses validasinya
    
    // Tambahkan if apakah $mode save atau update
    // Karena ketika update, NIS tidak harus divalidasi
    // Jadi NIS di validasi hanya ketika menambah data siswa saja
    if($mode == "save")
      $this->form_validation->set_rules('input_nis', 'NIS', 'required|numeric|max_length[11]');
    
    $this->form_validation->set_rules('input_nama', 'Nama', 'required|max_length[50]');
    $this->form_validation->set_rules('input_jeniskelamin', 'Jenis Kelamin', 'required');
    $this->form_validation->set_rules('input_telp', 'telp', 'required|numeric|max_length[15]');
    $this->form_validation->set_rules('input_alamat', 'Alamat', 'required');
      
    if($this->form_validation->run()) // Jika validasi benar
      return TRUE; // Maka kembalikan hasilnya dengan TRUE
    else // Jika ada data yang tidak sesuai validasi
      return FALSE; // Maka kembalikan hasilnya dengan FALSE
  }
  
  // Fungsi untuk melakukan simpan data ke tabel siswa
  public function save(){
    $data = array(
      "nis" => $this->input->post('input_nis'),
      "nama" => $this->input->post('input_nama'),
      "jenis_kelamin" => $this->input->post('input_jeniskelamin'),
      "telp" => $this->input->post('input_telp'),
      "alamat" => $this->input->post('input_alamat')
    );
    
    $this->db->insert('siswa', $data); // Untuk mengeksekusi perintah insert data
  }
  
  // Fungsi untuk melakukan ubah data siswa berdasarkan NIS siswa
  public function edit($nis){
    $data = array(
      "nama" => $this->input->post('input_nama'),
      "jenis_kelamin" => $this->input->post('input_jeniskelamin'),
      "telp" => $this->input->post('input_telp'),
      "alamat" => $this->input->post('input_alamat')
    );
    
    $this->db->where('nis', $nis);
    $this->db->update('siswa', $data); // Untuk mengeksekusi perintah update data
  }
  
  // Fungsi untuk melakukan menghapus data siswa berdasarkan NIS siswa
  public function delete($nis){
    $this->db->where('nis', $nis);
    $this->db->delete('siswa'); // Untuk mengeksekusi perintah delete data
  }
}

Pada kode di atas kita membuat fungsi view() yang di dalamnya terdapat kode return $this->db->get(‘siswa’)->result(). Kode ini berfungsi menampilkan seluruh data pada tabel siswa. Struktur dasar penulisannya adalah return $this->db->get(‘nama_tabel‘)->result().

Kemudian kode di atas juga memuat kode return. Kode ini dipakai untuk mengeluarkan hasil dari sebuah fungsi. Berdasarkan contoh, hasil yang dikeluarkan return adalah data-data siswa.

Sedangkan fungsi view_by($nis) dipakai untuk menampilkan data siswa berdasarkan nis yang telah ditentukan. Pada fungsi ini kita juga bisa menjumpai kode $this->db->where(‘nis’, $nis); yang fungsinya adalah untuk menambahkan ‘where clause’ pada query yang dideklarasikan.

Fungsi validation($mode) berfungsi untuk melakukan validasi data dari input form. Pada Codeigniter, untuk melakukan validasi kita bisa memanfaatkan library form_validation.

Untuk mengatur validasi di setiap input form, gunakan kode $this->form_validation->set_rules(‘nama_form_input’, ‘label_untuk_pesan_error’, ‘validasi_yang_kita_inginkan’).

Codeigniter telah menyediakan validasi-validasi yang bisa Anda lihat pada dokumentasi dari Codeigniter.

Langkah 5 – Membuat Controller

Setelah selesai membuat model, berikutnya kita buat controller. Caranya buat file baru dengan nama Siswa.php dan simpan pada folder xampp/htdocs/crud_ci/application/controllers/. Isi file tersebut dengan kode berikut:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Siswa extends CI_Controller {
  
  public function __construct(){
    parent::__construct();
    
    $this->load->model('SiswaModel'); // Load SiswaModel ke controller ini
  }
  
  public function index(){
    $data['siswa'] = $this->SiswaModel->view();
    $this->load->view('siswa/index', $data);
  }
  
  public function tambah(){
    if($this->input->post('submit')){ // Jika user mengklik tombol submit yang ada di form
      if($this->SiswaModel->validation("save")){ // Jika validasi sukses atau hasil validasi adalah TRUE
        $this->SiswaModel->save(); // Panggil fungsi save() yang ada di SiswaModel.php
        redirect('siswa');
      }
    }
    
    $this->load->view('siswa/form_tambah');
  }
  
  public function ubah($nis){
    if($this->input->post('submit')){ // Jika user mengklik tombol submit yang ada di form
      if($this->SiswaModel->validation("update")){ // Jika validasi sukses atau hasil validasi adalah TRUE
        $this->SiswaModel->edit($nis); // Panggil fungsi edit() yang ada di SiswaModel.php
        redirect('siswa');
      }
    }
    
    $data['siswa'] = $this->SiswaModel->view_by($nis);
    $this->load->view('siswa/form_ubah', $data);
  }
  
  public function hapus($nis){
    $this->SiswaModel->delete($nis); // Panggil fungsi delete() yang ada di SiswaModel.php
    redirect('siswa');
  }
}

Pada controller tersebut kita membuat beberapa fungsi. Antara lain public function __construct(){ dan public function index().

Langkah 6 – Membuat View

Langkah berikutnya adalah membuat file view yang fungsinya untuk menampilkan data siswa. Caranya buat folder dengan nama siswa pada folder xampp/htdocs/crud_ci/application/views/. Kemudian buat file dengan nama index.php dan simpan pada folder yang baru saja Anda buat itu. Pada file itu tulis kode berikut:

<html>
  <head>
    <title>CRUD Codeigniter</title>
  </head>
  <body>
    <h1>Data siswa</h1>
    <hr>

    <a href='<?php echo base_url("siswa/tambah"); ?>'>Tambah Data</a><br><br>

    <table border="1" cellpadding="7">
      <tr>
        <th>NPM</th>
        <th>Nama</th>
        <th>Jenis Kelamin</th>
        <th>Telepon</th>
        <th>Alamat</th>
        <th colspan="2">Aksi</th>
      </tr>

      <?php
      if( ! empty($siswa)){ // Jika data siswa tidak sama dengan kosong, artinya jika data siswa ada
        foreach($siswa as $data){
          echo "<tr>
          <td>".$data->nis."</td>
          <td>".$data->nama."</td>
          <td>".$data->jenis_kelamin."</td>
          <td>".$data->telp."</td>
          <td>".$data->alamat."</td>
          <td><a href='".base_url("siswa/ubah/".$data->nis)."'>Ubah</a></td>
          <td><a href='".base_url("siswa/hapus/".$data->nis)."'>Hapus</a></td>
          </tr>";
        }
      }else{ // Jika data siswa kosong
        echo "<tr><td align='center' colspan='7'>Data Tidak Ada</td></tr>";
      }
      ?>
    </table>
  </body>
</html>

Jika Anda amati, terdapat kode foreach($siswa as $data){. Kode ini akan menampilkan satu per satu data siswa pertama hingga terakhir. Tampilannya kurang lebih akan seperti berikut ini.

Langkah 7 – Membuat Form Tambah

Selesai membuat view, tahap selanjutnya adalah membuat form untuk  menambah data. Buat file baru dan misalnya kita beri nama form_tambah.php. Simpan file baru ini pada folder xampp/htdocs/crud_ci/application/views/siswa/.

Tulis kode di bawah ini pada file form_tambah.php tersebut:

<html>
  <head>
    <title>Form Tambah - CRUD Codeigniter</title>
  </head>
  <body>
    <h1>Form Tambah Data Mahasiswa</h1>
    <hr>

    <!-- Menampilkan Error jika validasi tidak valid -->
    <div style="color: red;"><?php echo validation_errors(); ?></div>

    <?php echo form_open("siswa/tambah"); ?>
      <table cellpadding="8">
        <tr>
          <td>NIS</td>
          <td><input type="text" name="input_nis" value="<?php echo set_value('input_nis'); ?>"></td>
        </tr>
        <tr>
          <td>Nama</td>
          <td><input type="text" name="input_nama" value="<?php echo set_value('input_nama'); ?>"></td>
        </tr>
        <tr>
          <td>Jenis Kelamin</td>
          <td>
          <input type="radio" name="input_jeniskelamin" value="Laki-laki" <?php echo set_radio('jeniskelamin', 'Laki-laki'); ?>> Laki-laki
          <input type="radio" name="input_jeniskelamin" value="Perempuan" <?php echo set_radio('jeniskelamin', 'Perempuan'); ?>> Perempuan
          </td>
        </tr>
        <tr>
          <td>Telepon</td>
          <td><input type="text" name="input_telp" value="<?php echo set_value('input_telp'); ?>"></td>
        </tr>
        <tr>
          <td>Alamat</td>
          <td><textarea name="input_alamat"><?php echo set_value('input_alamat'); ?></textarea></td>
        </tr>
      </table>
        
      <hr>
      <input type="submit" name="submit" value="Simpan">
      <a href="<?php echo base_url(); ?>"><input type="button" value="Batal"></a>
    <?php echo form_close(); ?>
  </body>
</html>

Nantinya tampilan form tambah akan menjadi seperti berikut.

Kode form_open(“siswa/tambah”) sama seperti jika membuat tag form. Kode tersebut akan menghasilkan tag form seperti <form method=”post” action=”http://localhost/crud_ci/siswa/tambah”>.

Di samping itu terdapat kode set_value(‘input_nis’) yang tujuannya untuk menset value dari textbox input_nis. Sehingga saat terjadi error dan halaman kembali ke form, data yang telah dimasukkan sebelumnya tidak hilang. input_nis merupakan name dari textbox di atas.

Sedangkan kode form_close() akan menghasilkan penutup tag form </form>.

Baca juga: Cara Membuat Login Di Codeigniter

Langkah 8 – Form Ubah

Untuk mengubah data, maka kita memerlukan form ubah. Buat file baru dan beri nama form_ubah.php. Simpan file ini pada xampp/htdocs/crud_ci/application/views/siswa/. Masukkan kode berikut pada file baru tersebut:

<html>
  <head>
    <title>Form Ubah - CRUD Codeigniter</title>
  </head>
  <body>
    <h1>Form Ubah Data Mahasiswa</h1>
    <hr>

    <!-- Menampilkan Error jika validasi tidak valid -->
    <div style="color: red;"><?php echo validation_errors(); ?></div>

    <?php echo form_open("siswa/ubah/".$siswa->nis); ?>
      <table cellpadding="8">
        <tr>
          <td>NIS</td>
          <td><input type="text" name="input_nis" value="<?php echo set_value('input_nis', $siswa->nis); ?>" readonly></td>
        </tr>
        <tr>
          <td>Nama</td>
          <td><input type="text" name="input_nama" value="<?php echo set_value('input_nama', $siswa->nama); ?>"></td>
        </tr>
        <tr>
          <td>Jenis Kelamin</td>
          <td>
          <input type="radio" name="input_jeniskelamin" value="Laki-laki" <?php echo set_radio('jeniskelamin', 'Laki-laki', ($siswa->jenis_kelamin == "Laki-laki")? true : false); ?>> Laki-laki
          <input type="radio" name="input_jeniskelamin" value="Perempuan" <?php echo set_radio('jeniskelamin', 'Perempuan', ($siswa->jenis_kelamin == "Perempuan")? true : false); ?>> Perempuan
          </td>
        </tr>
        <tr>
          <td>Telepon</td>
          <td><input type="text" name="input_telp" value="<?php echo set_value('input_telp', $siswa->telp); ?>"></td>
        </tr>
        <tr>
          <td>Alamat</td>
          <td><textarea name="input_alamat"><?php echo set_value('input_alamat', $siswa->alamat); ?></textarea></td>
        </tr>
      </table>
        
      <hr>
      <input type="submit" name="submit" value="Ubah">
      <a href="<?php echo base_url(); ?>"><input type="button" value="Batal"></a>
    <?php echo form_close(); ?>
  </body>
</html>

Variabel $siswa merupakan hasil dari query pada controller siswa di function ubah. Kemudian kita set masing-masing input pada form supaya dapat menampilkan data sebelumnya. Untuk melakukan hal ini kita manfaatkan fungsi set_value(name_textbox, valuenya). Hasil dari kode di atas adalah seperti berikut.



Loading...

Leave a Comment