Pernahkah kamu mendengar istilah CRUD? Setelah terjun ke dunia Pemrograman, sering kali saya mendengar istilah CRUD. Apalagi setelah mencoba membuat aplikasi yang berhubungan database, maka kita akan sering berinteraksi dengan 'CRUD'. Ya, CRUD yang merupakan singkatan dari create, read, update dan delete, ini memang termasuk fitur yang sering kita jumpai apabila terdapat proses manipulasi database. Tampak seperti fitur yang penting, memang. Oleh karena itu, sebagai tutorial pertama di blog saya dan karena di postingan sebelumnya tentang CodeIgniter, maka kita akan membahas tentang CRUD Sederhana CodeIgniter. Jadi, kita akan membuat sebuah project CRUD sederhana dengan CodeIgniter.
Tutorial CRUD Sederhana CodeIgniter ini didesain sehingga bisa diimplementasikan dengan mudah dan memudahkan untuk memahami CRUD menggunakan framework CodeIgniter. Cocok untuk kamu yang baru belajar framework CodeIgniter. Di dalam tutorial ini juga akan membahas persiapan apa saja yang diperlukan sebelum memulai project, study kasus project dan juga langkah-langkah dalam membangun project CRUD sederhana CodeIgniter. Dan sebagai study kasus, kita akan membangun project CRUD sederhana CodeIgniter untuk mengelola data Mahasiswa. Lalu, apa saja langkah-langkah dalam membangun project CRUD sederhana COdeIgniter? Try this out ya!
Ya, sebelum memulai. Kita cek dulu apa saja yang kita gunakan dalam pembuatan simple CRUD CodeIgniter. Berikut ini adalah minimum spesifikasi yang saya gunakan:
Untuk CodeIgniter, kamu bisa download langsung di web official CodeIgniter. Setelah kamu download, extract CodeIgniter, lalu pindahkan folder CodeIgniter (hasil extract) ke document root (di folder xampp/htdocs
). Kemudian, rename folder CodeIgniter (hasil extract) jadi crud_ci
.
Nah, sekarang buka phpMyAdmin, lalu kita buat database dengan nama dbci3
. Selanjutnya, kita buat tabel dengan nama tabel_mahasiswa
. Nah, untuk membuat tabel, klik menu SQL di phpMyAdmin, lalu run perintah SQL di bawah ini:
CREATE TABLE `tabel_mahasiswa` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`nim` varchar(15) NOT NULL,
`nama` varchar(30) NOT NULL,
`jenis_kelamin` enum('PRIA','WANITA') NOT NULL,
`tempat_lahir` varchar(50) NOT NULL,
`tanggal_lahir` date NOT NULL,
`alamat` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Klik tombol 'go' di kanan bawah untuk running perintah SQL di atas. Nah, kita berhasil membuat tabel_mahasiswa dan di bawah ini adalah struktur tabelnya:
Langkah Selanjutnya adalah konfigurasi base_url dari aplikasi web yang sedang dibangun. Di dalam contoh ini digunakan localhost, dalam aplikasi sesungguhnya, nanti diubah menjadi alamat website (Misalkan https://gungunpriatna.com
).
Nah, sekarang buka text editor kesayanganmu. Lalu buka file config.php
yang ada di direktori crud_ci/application/config
.
Cek line ke 26, ubah:
$config['base_url'] = '';
menjadi:
$config['base_url'] = 'http://localhost/crud_ci';
Save kembali file config.php
.
Setelah konfigurasi base url, selanjutnya adalah mengatur konfigurasi database. Nah, sekarang buka kembali teks editor kesayanganmu, lalu buka file database.php
, masih di direktori yang sama kaya file config.php
, yaitu crud_ci/application/config
. Cek line 76, lalu isi konfigurasi database seperti gambar di bawah ini:
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'dbci3',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
Kalau sudah selesai, save kembali file database.php
.
Langkah berikutnya adalah menghubungkan database yang sudah kita atur konfigurasinya dengan cara mengaktifkan library database. Library database ini yang nantinya digunakan untuk menangani segala aktifitas yang berhubungan dengan database dalam Framework CodeIgniter.
Untuk mengaktifkan library database, buka file autoload.php
di dalam direktori crud_ci/application/config
. Cek line ke 61, lalu isi array dengan database.
$autoload['libraries'] = array('database');
Baik setelah persiapan development selesai, sekarang kita mulai masuk ke studi kasusnya teman-teman. Pada tahapan ini, kita akan ngoding untuk fitur menampilkan data mahasiswa. Sesuai dengan konsep MVC, kita akan membuat beberapa file, yaitu:
Mahasiswa_model.php
mahasiswa/index.php
, (yep, nanti kita buat folder baru di dalam direktori crud_ci/application/views
dengan nama mahasiswa
).Mahasiswa.php
.Sekarang kita buat dulu file model dengan nama Mahasiswa_model.php
. Buka kembali teks editor kesayanganmu lalu ketik script di bawah ini.
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class Mahasiswa_model extends CI_Model
{
function get()
{
//SELECT * FROM tabel_mahasiswa
return $this->db->get('tabel_mahasiswa');
}
}
Kalau sudah diketik, save file dengan nama Mahasiswa_model.php
di direktori crud_ci/application/models
.
Selanjutnya kita buat dulu folder baru dengan nama mahasiswa
didalam direktori crud_ci/application/views
.
Langkah selanjutnya kita buat file view untuk menampilkan data mahasiswa dengan nama index.php
, nanti kita simpan file tersebut di dalam folder mahasiswa
yang sudah kita buat. Nah sekarang silakan ketik kode di bawah ini.
<?php defined('BASEPATH') or exit('No direct script access allowed'); ?>
<!DOCTYPE html>
<html>
<head>
<title>Tampil Data Mahasiswa</title>
</head>
<body>
<H3>Data Mahasiswa</H3>
<table border=1 width=80% cellpadding=2 cellspacing=0>
<tr bgcolor=silver align=center>
<td>Nim</td>
<td>Nama</td>
<td>Jenis Kelamin</td>
<td>Tempat Lahir</td>
<td>Tanggal Lahir</td>
<td>Alamat</td>
<td colspan=2>AKSI</td>
</tr>
<?php
if ($jumlah_data > 0) {
foreach ($mahasiswa as $row) { ?>
<tr align=center>
<td><?php echo $row['nim']; ?></td>
<td><?php echo $row['nama']; ?></td>
<td><?php echo $row['jenis_kelamin']; ?></td>
<td><?php echo $row['tempat_lahir']; ?></td>
<td><?php echo $row['tanggal_lahir']; ?></td>
<td><?php echo $row['alamat']; ?></td>
<td><a href="<?php echo base_url(); ?>index.php/mahasiswa/edit/<?php echo $row['nim']; ?>">Edit</a></td>
<td><a href="<?php echo base_url(); ?>index.php/mahasiswa/hapus/<?php echo $row['nim']; ?>" onclick="return confirm('Apakah anda yakin ingin menghapus data ini?');">Delete</a></td>
</tr>
<?php
}
} else { ?>
<tr align='center'>
<td colspan=7>Data Mahasiswa kosong</td>
</tr>
<?php } ?>
</table>
<p>Jumlah data : <?php echo $jumlah_data; ?> [<a href="<?php echo base_url(); ?>index.php/mahasiswa/create">Tambah Data</a>] </p>
</body>
</html>
Kalau sudah diketik, save file dengan nama index.php
di direktori crud_ci/application/views/mahasiswa
.
Oke, selanjutnya kita buat file Controller dengan nama Mahasiswa.php
. Sekarang buka kembali teks editor kesayanganmu, lalu ketik script di bawah ini ya~...
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class Mahasiswa extends CI_Controller
{
function __construct()
{
parent::__construct();
//load helper
$this->load->helper('url');
$this->load->helper('form');
//load library
$this->load->library('form_validation');
//load model
$this->load->model('mahasiswa_model');
}
public function index()
{
//ambil data dari database
$getData = $this->mahasiswa_model->get();
$data = [
'mahasiswa' => $getData->result_array(),
'jumlah_data' => $getData->num_rows()
];
//menampilkan view
$this->load->view('mahasiswa/index', $data);
}
}
Okee, kita save file Controller kita dengan nama Mahasiswa.php
di direktori crud_ci/application/controllers
.
Fitur selanjutnya adalah fitur untuk menambahkan data mahasiswa ke dalam tabel di dalam database. Dalam membuat fitur ini ada beberapa tahapan, yaitu:
Mahasiswa_model.php
.add.php
dan notifikasi.php
di dalam direktori crud_ci/application/views/mahasiswa
.Mahasiswa.php
Baik, sekarang kita buka kembali file model Mahasiswa_model.php
. Lalu tambahkan method insert()
di dalam Class Mahasiswa_model
.
function insert($data)
{
//insert data ke dalam tabel
$this->db->insert('tabel_mahasiswa', $data);
}
Sehingga file Mahasiswa_model.php
menjadi seperti di bawah ini.
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class Mahasiswa_model extends CI_Model
{
function get()
{
//SELECT * FROM tabel_mahasiswa
return $this->db->get('tabel_mahasiswa');
}
function insert($data)
{
//insert data ke dalam tabel
$this->db->insert('tabel_mahasiswa', $data);
}
}
Save kembali file Mahasiswa_model.php
.
Langkah selanjutnya kita buat file baru untuk menampilkan form insert data mahasiswa di dalam direktori application/views/mahasiswa
dengan nama add.php
. Buka kembali teks editor kesayanganmu, lalu ketik script di bawah ini yaa~..
<?php defined('BASEPATH') or exit('No direct script access allowed'); ?>
<!DOCTYPE html>
<html>
<head>
<title>TAMBAH DATA MAHASISWA</title>
</head>
<body>
<?php echo form_open('mahasiswa/create'); ?>
<table border=0 width="45%" cellpadding="5" cellspacing="0">
<tr bgcolor="silver">
<td Colspan="3" align="center">
<H3>DATA MAHASISWA</H3>
</td>
</tr>
<tr>
<td>NIM</td>
<td>:</td>
<td><input type="text" name="nim" value="<?php echo set_value('nim'); ?>" size="50"><?php echo form_error('nim'); ?></td>
</tr>
<tr>
<td>Nama</td>
<td>:</td>
<td><input type="text" name="nama" value="<?php echo set_value('nama'); ?>" size="50"><?php echo form_error('nama'); ?></td>
</tr>
<tr>
<td>Jenis Kelamin</td>
<td>:</td>
<td>
<input type="radio" name="jeniskelamin" checked value="PRIA">PRIA
<input type="radio" name="jeniskelamin" value="WANITA">WANITA
</td><?php echo form_error('jeniskelamin'); ?>
</tr>
<tr>
<td>Tempat Lahir</td>
<td>:</td>
<td><input type="text" name="tempat_lahir" value="<?php echo set_value('tempat_lahir'); ?>" size="50"><?php echo form_error('tempat_lahir'); ?></td>
</tr>
<tr>
<td>Tanggal lahir</td>
<td>:</td>
<td><input type="text" name="tanggal_lahir" value="<?php echo set_value('tanggal_lahir'); ?>" size="50"><?php echo form_error('tanggal_lahir'); ?></td>
</tr>
<tr>
<td></td>
<td></td>
<td><em>Format tanggal yyyy-mm-dd contoh: 1996-12-15</em></td>
</tr>
<tr>
<td>Alamat</td>
<td>:</td>
<td><textarea name="alamat" rows="2" value="<?php echo set_value('alamat'); ?>" cols="52"></textarea><?php echo form_error('alamat'); ?></td>
</tr>
<tr align="center">
<td colspan="3">
<input type="submit" value="TAMBAH">
<input type="reset" value="BATAL">
[<a href="<?php echo base_url(); ?>index.php/mahasiswa">Lihat Data Mahasiswa</a>]
</td>
</tr>
</table>
<?php echo form_close(); ?>
</body>
</html>
Kalau sudah selesai, jangan lupa simpan file add.php
.
Selanjutnya kita buat file view dengan nama notifikasi.php
. Lalu ketik script di bawah ini.
<?php defined('BASEPATH') or exit('No direct script access allowed'); ?>
<!doctype html>
<html>
<head>
<title>DATA MAHASISWA</title>
</head>
<body>
<p><?php echo $msg; ?></p>
<p><?php echo anchor('mahasiswa', 'Kembali'); ?></p>
</body>
</html>
Yep, simpan file notifikasi.php
di direktori yang sama kaya file add.php
yaitu, direktori application/views/mahasiswa
ya..
Okee, selanjutnya kita akan menambahkan method baru untuk memproses penyimpanan data mahasiswa di dalam file controller Mahasiswa.php
. Sekarang buka kembali file Mahasiswa.php
dengan teks editor kesayanganmu, lalu tambahkan method create()
di dalam class Mahasiswa
.
public function create()
{
//rule validasi
$validation_rules = [
[
'field' => 'nim',
'label' => 'NIM',
'rules' => 'required'
],
[
'field' => 'nama',
'label' => 'Nama',
'rules' => 'required'
],
[
'field' => 'jeniskelamin',
'label' => 'Jenis Kelamin',
'rules' => 'required'
],
[
'field' => 'tempat_lahir',
'label' => 'Tempat Lahir',
'rules' => 'required'
],
[
'field' => 'tanggal_lahir',
'label' => 'Tanggal Lahir',
'rules' => 'required'
],
[
'field' => 'alamat',
'label' => 'Alamat',
'rules' => 'required'
]
];
//set rule validasi
$this->form_validation->set_rules($validation_rules);
if ($this->form_validation->run() === FALSE) {
$this->load->view('mahasiswa/add');
} else {
//data mahasiswa
$mahasiswa = [
'nim' => $this->input->post('nim'),
'nama' => $this->input->post('nama'),
'tempat_lahir' => $this->input->post('tempat_lahir'),
'tanggal_lahir' => $this->input->post('tanggal_lahir'),
'jenis_kelamin' => $this->input->post('jeniskelamin'),
'alamat' => $this->input->post('alamat')
];
$this->mahasiswa_model->insert($mahasiswa);
$data['msg'] = 'Data berhasil disimpan';
$this->load->view('mahasiswa/notifikasi', $data);
}
}
Sehingga, nanti isi file controller Mahasiswa.php
menjadi:
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class Mahasiswa extends CI_Controller
{
function __construct()
{
parent::__construct();
//load helper
$this->load->helper('url');
$this->load->helper('form');
//load library
$this->load->library('form_validation');
//load model
$this->load->model('mahasiswa_model');
}
public function index()
{
//ambil data dari database
$getData = $this->mahasiswa_model->get();
$data = [
'mahasiswa' => $getData->result_array(),
'jumlah_data' => $getData->num_rows()
];
//menampilkan view
$this->load->view('mahasiswa/index', $data);
}
public function create()
{
//rule validasi
$validation_rules = [
[
'field' => 'nim',
'label' => 'NIM',
'rules' => 'required'
],
[
'field' => 'nama',
'label' => 'Nama',
'rules' => 'required'
],
[
'field' => 'jeniskelamin',
'label' => 'Jenis Kelamin',
'rules' => 'required'
],
[
'field' => 'tempat_lahir',
'label' => 'Tempat Lahir',
'rules' => 'required'
],
[
'field' => 'tanggal_lahir',
'label' => 'Tanggal Lahir',
'rules' => 'required'
],
[
'field' => 'alamat',
'label' => 'Alamat',
'rules' => 'required'
]
];
//set rule validasi
$this->form_validation->set_rules($validation_rules);
if ($this->form_validation->run() === FALSE) {
$this->load->view('mahasiswa/add');
} else {
//data mahasiswa
$mahasiswa = [
'nim' => $this->input->post('nim'),
'nama' => $this->input->post('nama'),
'tempat_lahir' => $this->input->post('tempat_lahir'),
'tanggal_lahir' => $this->input->post('tanggal_lahir'),
'jenis_kelamin' => $this->input->post('jeniskelamin'),
'alamat' => $this->input->post('alamat')
];
$this->mahasiswa_model->insert($mahasiswa);
$data['msg'] = 'Data berhasil disimpan';
$this->load->view('mahasiswa/notifikasi', $data);
}
}
}
Jangan lupa save kembali file Mahasiswa.php
yaaa..
Ok, next ...
Fitur selanjutnya adalah fitur untuk memperbaharui data mahasiswa. Tahapan dalam membuat fitur ini adalah:
Mahasiswa_model.php
yaitu method get_by_nim()
untuk mengambil data mahasiswa berdasarkan nim dan method update()
untuk memperbaharui data mahasiswa.edit.php
di dalam direktori crud_ci/application/views/mahasiswa
.Mahasiswa.php
Nah, sekarang kita buka kembali file model kita, yaitu Mahasiswa_model.php
. Lalu tambahkan method get_by_nim()
dan method update()
di dalam class Mahasiswa_model
.
function get_by_nim($nim)
{
//SELECT * FROM tabel_mahasiswa WHERE nim=$nim
$this->db->where('nim', $nim);
$this->db->from('tabel_mahasiswa');
return $this->db->get();
}
function update($data, $where)
{
$this->db->where($where);
$this->db->update('tabel_mahasiswa', $data);
}
sehingga file model kita pada tahapan ini menjadi seperti script di bawah ini...
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class Mahasiswa_model extends CI_Model
{
function get()
{
//SELECT * FROM tabel_mahasiswa
return $this->db->get('tabel_mahasiswa');
}
function get_by_nim($nim)
{
//SELECT * FROM tabel_mahasiswa WHERE nim=$nim
$this->db->where('nim', $nim);
$this->db->from('tabel_mahasiswa');
return $this->db->get();
}
function insert($data)
{
//insert data ke dalam tabel
$this->db->insert('tabel_mahasiswa', $data);
}
function update($data, $where)
{
$this->db->where($where);
$this->db->update('tabel_mahasiswa', $data);
}
}
Kalau sudah diketik, jangan lupa save lagi file Mahasiswa_model.php
nya yaa.
Nah selanjutnya buat file view untuk menampilkan form edit data mahasiswa.
Buat file baru dengan nama edit.php
di dalam direktori crud_ci/application/views/mahasiswa
. Lalu ketik script di bawah ini.
<?php defined('BASEPATH') or exit('No direct script access allowed'); ?>
<!DOCTYPE html>
<html>
<head>
<title>edit Data Mahasiswa</title>
</head>
<body>
<?php echo form_open('mahasiswa/update'); ?>
<table border=0 width="45%" cellpadding="5" cellspacing="0">
<tr bgcolor="silver">
<td Colspan="3" align="center">
<H3>DATA MAHASISWA</H3>
</td>
</tr>
<tr>
<td>NIM</td>
<td>:</td>
<td><input type="text" name="nim" value="<?php echo $mahasiswa['nim']; ?>" size="50"><?php echo form_error('nim'); ?></td>
</tr>
<tr>
<td>Nama</td>
<td>:</td>
<td><input type="text" name="nama" value="<?php echo $mahasiswa['nama']; ?>" size="50"><?php echo form_error('nama'); ?></td>
</tr>
<tr>
<td>Jenis Kelamin</td>
<td>:</td>
<td>
<input type="radio" name="jeniskelamin" <?php if ($mahasiswa['jenis_kelamin'] == 'PRIA') {
echo 'checked';
} ?> value="PRIA">PRIA
<input type="radio" name="jeniskelamin" <?php if ($mahasiswa['jenis_kelamin'] == 'WANITA') {
echo 'checked';
} ?> value="WANITA">WANITA
</td><?php echo form_error('jeniskelamin'); ?>
</tr>
<tr>
<td>Tempat Lahir</td>
<td>:</td>
<td><input type="text" name="tempat_lahir" value="<?php echo $mahasiswa['tempat_lahir']; ?>" size="50"><?php echo form_error('tempat_lahir'); ?></td>
</tr>
<tr>
<td>Tanggal lahir</td>
<td>:</td>
<td><input type="text" name="tanggal_lahir" value="<?php echo $mahasiswa['tanggal_lahir']; ?>" size="50"><?php echo form_error('tanggal_lahir'); ?></td>
</tr>
<tr>
<td></td>
<td></td>
<td>Format tanggal yyyy-mm-dd contoh: 1996-12-15</td>
</tr>
<tr>
<td>Alamat</td>
<td>:</td>
<td><textarea name="alamat" rows="2" cols="52"><?php echo $mahasiswa['alamat']; ?></textarea><?php echo form_error('alamat'); ?></td>
</tr>
<tr align="center">
<td colspan="3">
<button type="submit" value="update" name="update">Update</button>
<button type="reset">Reset</button>
[<a href="<?php echo base_url(); ?>index.php/mahasiswa">Lihat Data Mahasiswa</a>]
</td>
</tr>
</table>
<?php echo form_close(); ?>
</body>
</html>
Save file edit.php
.
Selanjutnya, kita buka kembali file controller Mahasiswa.php
dengan teks editor. Lalu tambahkan method edit()
dan update()
di dalam *class Mahasiswa
public function edit($nim = '')
{
//Cek apakah ada parameter $nim
if ('' == $nim) {
//jika tidak ada, maka alihkan ke halaman daftar mahasiswa
redirect('mahasiswa');
}
//ambil data mahasisa berdasarkan nim
$data['mahasiswa'] = $this->mahasiswa_model->get_by_nim($nim)->row_array();
//load form edit
$this->load->view('mahasiswa/edit', $data);
}
public function update()
{
//cek apakah tombol update ditekan
if ($this->input->post('update')) {
$nim = $this->input->post('nim');
//rule validasi
$validation_rules = [
[
'field' => 'nim',
'label' => 'NIM',
'rules' => 'required'
],
[
'field' => 'nama',
'label' => 'Nama',
'rules' => 'required'
],
[
'field' => 'jeniskelamin',
'label' => 'Jenis Kelamin',
'rules' => 'required'
],
[
'field' => 'tempat_lahir',
'label' => 'Tempat Lahir',
'rules' => 'required'
],
[
'field' => 'tanggal_lahir',
'label' => 'Tanggal Lahir',
'rules' => 'required'
],
[
'field' => 'alamat',
'label' => 'Alamat',
'rules' => 'required'
]
];
//set rule validasi
$this->form_validation->set_rules($validation_rules);
if ($this->form_validation->run() === false) {
redirect('mahasiswa/edit/' . $nim);
}
$where['nim'] = $nim;
//data mahasiswa
$mahasiswa = [
'nim' => $this->input->post('nim'),
'nama' => $this->input->post('nama'),
'tempat_lahir' => $this->input->post('tempat_lahir'),
'tanggal_lahir' => $this->input->post('tanggal_lahir'),
'jenis_kelamin' => $this->input->post('jeniskelamin'),
'alamat' => $this->input->post('alamat')
];
//update data
$this->mahasiswa_model->update($mahasiswa, $where);
$data['msg'] = 'Data berhasil diperbaharui';
$this->load->view('mahasiswa/notifikasi', $data);
} else {
echo "<h3 style='color:red;'>Forbidden access</h3>";
}
}
Sehingga file controller kita akan jadi:
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class Mahasiswa extends CI_Controller
{
function __construct()
{
parent::__construct();
//load helper
$this->load->helper('url');
$this->load->helper('form');
//load library
$this->load->library('form_validation');
//load model
$this->load->model('mahasiswa_model');
}
public function index()
{
//ambil data dari database
$getData = $this->mahasiswa_model->get();
$data = [
'mahasiswa' => $getData->result_array(),
'jumlah_data' => $getData->num_rows()
];
//menampilkan view
$this->load->view('mahasiswa/index', $data);
}
public function create()
{
//rule validasi
$validation_rules = [
[
'field' => 'nim',
'label' => 'NIM',
'rules' => 'required'
],
[
'field' => 'nama',
'label' => 'Nama',
'rules' => 'required'
],
[
'field' => 'jeniskelamin',
'label' => 'Jenis Kelamin',
'rules' => 'required'
],
[
'field' => 'tempat_lahir',
'label' => 'Tempat Lahir',
'rules' => 'required'
],
[
'field' => 'tanggal_lahir',
'label' => 'Tanggal Lahir',
'rules' => 'required'
],
[
'field' => 'alamat',
'label' => 'Alamat',
'rules' => 'required'
]
];
//set rule validasi
$this->form_validation->set_rules($validation_rules);
if ($this->form_validation->run() === FALSE) {
$this->load->view('mahasiswa/add');
} else {
//data mahasiswa
$mahasiswa = [
'nim' => $this->input->post('nim'),
'nama' => $this->input->post('nama'),
'tempat_lahir' => $this->input->post('tempat_lahir'),
'tanggal_lahir' => $this->input->post('tanggal_lahir'),
'jenis_kelamin' => $this->input->post('jeniskelamin'),
'alamat' => $this->input->post('alamat')
];
$this->mahasiswa_model->insert($mahasiswa);
$data['msg'] = 'Data berhasil disimpan';
$this->load->view('mahasiswa/notifikasi', $data);
}
}
public function edit($nim = '')
{
//Cek apakah ada parameter $nim
if ('' == $nim) {
//jika tidak ada, maka alihkan ke halaman daftar mahasiswa
redirect('mahasiswa');
}
//ambil data mahasisa berdasarkan nim
$data['mahasiswa'] = $this->mahasiswa_model->get_by_nim($nim)->row_array();
//load form edit
$this->load->view('mahasiswa/edit', $data);
}
public function update()
{
//cek apakah tombol update ditekan
if ($this->input->post('update')) {
$nim = $this->input->post('nim');
//rule validasi
$validation_rules = [
[
'field' => 'nim',
'label' => 'NIM',
'rules' => 'required'
],
[
'field' => 'nama',
'label' => 'Nama',
'rules' => 'required'
],
[
'field' => 'jeniskelamin',
'label' => 'Jenis Kelamin',
'rules' => 'required'
],
[
'field' => 'tempat_lahir',
'label' => 'Tempat Lahir',
'rules' => 'required'
],
[
'field' => 'tanggal_lahir',
'label' => 'Tanggal Lahir',
'rules' => 'required'
],
[
'field' => 'alamat',
'label' => 'Alamat',
'rules' => 'required'
]
];
//set rule validasi
$this->form_validation->set_rules($validation_rules);
if ($this->form_validation->run() === false) {
redirect('mahasiswa/edit/' . $nim);
}
$where['nim'] = $nim;
//data mahasiswa
$mahasiswa = [
'nim' => $this->input->post('nim'),
'nama' => $this->input->post('nama'),
'tempat_lahir' => $this->input->post('tempat_lahir'),
'tanggal_lahir' => $this->input->post('tanggal_lahir'),
'jenis_kelamin' => $this->input->post('jeniskelamin'),
'alamat' => $this->input->post('alamat')
];
//update data
$this->mahasiswa_model->update($mahasiswa, $where);
$data['msg'] = 'Data berhasil diperbaharui';
$this->load->view('mahasiswa/notifikasi', $data);
} else {
echo "<h3 style='color:red;'>Forbidden access</h3>";
}
}
}
Dan seperti biasa, setelah selesai ngetiknya jangan lupa save lagi filenya yaa.
Dan fitur terakhir dalam project CRUD sederhana CodeIgniter ini adalah fitur untuk menghapus data mahasiswa. Tahapannya adalah:
delete()
di dalam model Mahasiswa_model.php
hapus
di dalam controller Mahasiswa.php
Oke, kita lanjutkan project kita.
Buka kembali file model Mahasiswa_model.php
, lalu tambahkan method delete()
di dalam class Mahasiswa_model
.
function delete($nim)
{
//delete data berdasarkan nim
$this->db->where('nim', $nim);
$this->db->delete('tabel_mahasiswa');
}
Sehingga code keseluruhan file Mahasiswa_model.php
menjadi:
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class Mahasiswa_model extends CI_Model
{
function get()
{
//SELECT * FROM tabel_mahasiswa
return $this->db->get('tabel_mahasiswa');
}
function get_by_nim($nim)
{
//SELECT * FROM tabel_mahasiswa WHERE nim=$nim
$this->db->where('nim', $nim);
$this->db->from('tabel_mahasiswa');
return $this->db->get();
}
function insert($data)
{
//insert data ke dalam tabel
$this->db->insert('tabel_mahasiswa', $data);
}
function delete($nim)
{
//delete data berdasarkan nim
$this->db->where('nim', $nim);
$this->db->delete('tabel_mahasiswa');
}
function update($data, $where)
{
$this->db->where($where);
$this->db->update('tabel_mahasiswa', $data);
}
}
Save kembali file Mahasiswa_model.php
Selanjutnya buka kembali file controller Mahasiswa.php
. Lalu tambahkan method hapus()
di dalam class Mahasiswa
public function hapus($nim = '')
{
//cek apakah parameter nim ada
if ('' == $nim) {
//jika tidak, tampilkan error
return show_404();
}
//hapus data
$this->mahasiswa_model->delete($nim);
$data['msg'] = 'Data berhasil dihapus';
$this->load->view('mahasiswa/notifikasi', $data);
}
Sehingga script keseluruhan class Mahasiswa
menjadi seperti script di bawah ini.
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class Mahasiswa extends CI_Controller
{
function __construct()
{
parent::__construct();
//load helper
$this->load->helper('url');
$this->load->helper('form');
//load library
$this->load->library('form_validation');
//load model
$this->load->model('mahasiswa_model');
}
public function index()
{
//ambil data dari database
$getData = $this->mahasiswa_model->get();
$data = [
'mahasiswa' => $getData->result_array(),
'jumlah_data' => $getData->num_rows()
];
//menampilkan view
$this->load->view('mahasiswa/index', $data);
}
public function create()
{
//rule validasi
$validation_rules = [
[
'field' => 'nim',
'label' => 'NIM',
'rules' => 'required'
],
[
'field' => 'nama',
'label' => 'Nama',
'rules' => 'required'
],
[
'field' => 'jeniskelamin',
'label' => 'Jenis Kelamin',
'rules' => 'required'
],
[
'field' => 'tempat_lahir',
'label' => 'Tempat Lahir',
'rules' => 'required'
],
[
'field' => 'tanggal_lahir',
'label' => 'Tanggal Lahir',
'rules' => 'required'
],
[
'field' => 'alamat',
'label' => 'Alamat',
'rules' => 'required'
]
];
//set rule validasi
$this->form_validation->set_rules($validation_rules);
if ($this->form_validation->run() === FALSE) {
$this->load->view('mahasiswa/add');
} else {
//data mahasiswa
$mahasiswa = [
'nim' => $this->input->post('nim'),
'nama' => $this->input->post('nama'),
'tempat_lahir' => $this->input->post('tempat_lahir'),
'tanggal_lahir' => $this->input->post('tanggal_lahir'),
'jenis_kelamin' => $this->input->post('jeniskelamin'),
'alamat' => $this->input->post('alamat')
];
$this->mahasiswa_model->insert($mahasiswa);
$data['msg'] = 'Data berhasil disimpan';
$this->load->view('mahasiswa/notifikasi', $data);
}
}
public function edit($nim = '')
{
//Cek apakah ada parameter $nim
if ('' == $nim) {
//jika tidak ada, maka alihkan ke halaman daftar mahasiswa
redirect('mahasiswa');
}
//ambil data mahasisa berdasarkan nim
$data['mahasiswa'] = $this->mahasiswa_model->get_by_nim($nim)->row_array();
//load form edit
$this->load->view('mahasiswa/edit', $data);
}
public function update()
{
//cek apakah tombol update ditekan
if ($this->input->post('update')) {
$nim = $this->input->post('nim');
//rule validasi
$validation_rules = [
[
'field' => 'nim',
'label' => 'NIM',
'rules' => 'required'
],
[
'field' => 'nama',
'label' => 'Nama',
'rules' => 'required'
],
[
'field' => 'jeniskelamin',
'label' => 'Jenis Kelamin',
'rules' => 'required'
],
[
'field' => 'tempat_lahir',
'label' => 'Tempat Lahir',
'rules' => 'required'
],
[
'field' => 'tanggal_lahir',
'label' => 'Tanggal Lahir',
'rules' => 'required'
],
[
'field' => 'alamat',
'label' => 'Alamat',
'rules' => 'required'
]
];
//set rule validasi
$this->form_validation->set_rules($validation_rules);
if ($this->form_validation->run() === false) {
redirect('mahasiswa/edit/' . $nim);
}
$where['nim'] = $nim;
//data mahasiswa
$mahasiswa = [
'nim' => $this->input->post('nim'),
'nama' => $this->input->post('nama'),
'tempat_lahir' => $this->input->post('tempat_lahir'),
'tanggal_lahir' => $this->input->post('tanggal_lahir'),
'jenis_kelamin' => $this->input->post('jeniskelamin'),
'alamat' => $this->input->post('alamat')
];
//update data
$this->mahasiswa_model->update($mahasiswa, $where);
$data['msg'] = 'Data berhasil diperbaharui';
$this->load->view('mahasiswa/notifikasi', $data);
} else {
echo "<h3 style='color:red;'>Forbidden access</h3>";
}
}
public function hapus($nim = '')
{
//cek apakah parameter nim ada
if ('' == $nim) {
//jika tidak, tampilkan error
return show_404();
}
//hapus data
$this->mahasiswa_model->delete($nim);
$data['msg'] = 'Data berhasil dihapus';
$this->load->view('mahasiswa/notifikasi', $data);
}
}
Setelah selesai ngetiknya, jangan lupa save kembali file controller Mahasiswa.php
.
Nah, sebelum uji coba aplikasi, sekarang kita cek dulu yang sudah kita buat. Sekarang kita punya folder dengan struktur folder adalah seperti di bawah ini (folder CI yang lain tidak ditampilkan):
crud_ci
-application
--controllers
---Mahasiswa.php
--models
---Mahasiswa_model.php
--views
---mahasiswa
----add.php
----edit.php
----index.php
----notifikasi.php
Di folder models
ada file Mahasiswa_model.php
. Folder views
ada folder baru mahasiswa
dengan empat file views, yaitu add.php
, edit.php
, index.php
dan notifikasi.php
. Dan folder controllers
ada file controller dengan nama Mahasiswa.php
.
Di langkah terakhir ini, kita akan mencoba project Simple CRUD CodeIgniter yang baru saja kita buat. Sebagai pengingat, project yang dibangun dengan framework CodeIgniter dapat diakses dengan mengetik link dengan pola: example.com/class/function/ID Jadi untuk mengakses project yang kita buat, kita ketik link berikut di browser:
http://localhost/crud_ci/index.php/mahasiwa
Kalau berhasil, akan muncul daftar mahasiswa seperti pada gambar di bawah ini:
Kok, belum ada daftar mahasiswanya? iya, kan belum kita isi.. Untuk menambahkan data, klik link 'Tambah Data' untuk membuka form data mahasiswa.
Coba klik tombol ‘TAMBAH’ untuk menguji form validation program. Jika form dikosongkan, maka akan muncul pesan error seperti di gambar di bawah ini.
Selanjutnya kita coba isi data mahasiswa di dalam form. Apabila sudah diisi, klik tombol ‘TAMBAH’.
Akan muncul pemberitahuan kalau data yang kamu isi itu sudah berhasil disimpan.
Setelah itu coba klik ‘kembali’ untuk kembali ke halaman awal. Data yang sudah ditambahkan ke dalam database akan tampil di tabel daftar Mahasiswa.
Untuk memperbaharui data mahasiswa, klik 'edit' di kolom AKSI. Browser akan meload halaman form untuk memperbaharui data.
Kita coba ubah datanya, lalu klik tombol ‘Update’. Sehingga muncul tampilan pemberitahuan data berhasil di perbaharui.
Klik link ‘Kembali’ untuk kembali ke halaman awal. Dapat terlihat data yang sudah diubah.
Dan terakhir, untuk menghapus data coba klik 'delete' di kolom AKSI. Maka, akan muncul tampilan pilihan untuk menghapus data.
Klik ok dan selanjutnya akan tampil halaman pemberitahuan data berhasil dihapus.
***
Ya, semoga tutorial Simple CRUD CodeIgniter ini bisa memudahkanmu untuk memahami dasar-dasar membuat aplikasi dengan fitur CRUD menggunakan framework CodeIgniter. Memberikan gambaran tentang basic design pattern dalam CodeIgniter, sehingga dapat kamu kembangkan menjadi aplikasi yang lebih baik.
Sebagai bahan referensi , source code tutorial ini dapat teman-teman unduh di sini.
Terima kasih sudah ikut menyimak tutorial di blog saya. Sampai berjumpa lagi di edisi tutorial berikutnya. Apabila ada pertanyaan, kritik, saran, request atau ingin berkontribusi bisa disampaikan melalui kolom komentar.
Boleh dishare, apabila bermanfaat. Happy coding!
***
Serial Tutorial CodeIgniter [Edisi Revisi] ini berisi tentang tutorial pengembangan aplikasi menggunakan framework CodeIgniter. Selain untuk mengikat ilmu, serial ini juga dibuat agar saya dan teman-teman bisa sama-sama belajar.
Tulisan ini dipublikasikan ulang dibawah lisensi Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License
© 2024 qadrLabs . All rights reserved. 000515268