Setelah kita belajar cara menginput dan menghapus data, sekarang saatnya kita membahas operasi terakhir yang tak kalah penting, yaitu mengedit atau memperbarui (update) data. Pada tutorial ini, kita akan memperbarui data mahasiswa di database menggunakan framework CodeIgniter dengan pendekatan MVC (Model-View-Controller).
Persiapan Awal
Sama seperti tutorial sebelumnya, pastikan Anda sudah memiliki hal-hal berikut:
- Proyek CodeIgniter: Proyek CodeIgniter Anda sudah berjalan dan terhubung dengan database.
- Tabel Database: Gunakan tabel
mahasiswayang sudah kita buat pada tutorial-tutorial sebelumnya. - Controller dan Model: Kita akan melanjutkan dengan Controller (
Crud.php) dan Model (M_data.php) yang sudah ada.
Langkah 1: Membuat Link atau Tombol Edit di View
Pertama, kita perlu menambahkan link “Edit” pada setiap baris data di view yang menampilkan daftar mahasiswa. Kita akan memodifikasi file v_tampil.php.
application/views/v_tampil.php
<!DOCTYPE html>
<html>
<head>
<title>Data Mahasiswa</title>
</head>
<body>
<center>
<h3>Data Mahasiswa</h3>
<a href="<?php echo base_url(). 'crud/tambah'; ?>">Tambah Data</a>
</center>
<table style="margin:20px auto;" border="1">
<thead>
<tr>
<th>No</th>
<th>Nama</th>
<th>NIM</th>
<th>Jurusan</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
<?php
$no = 1;
foreach($mahasiswa as $m){
?>
<tr>
<td><?php echo $no++; ?></td>
<td><?php echo $m->nama; ?></td>
<td><?php echo $m->nim; ?></td>
<td><?php echo $m->jurusan; ?></td>
<td>
<a href="<?php echo base_url(). 'crud/edit/'.$m->id; ?>">Edit</a>
<a href="<?php echo base_url(). 'crud/hapus_aksi/'.$m->id; ?>">Hapus</a>
</td>
</tr>
<?php
}
?>
</tbody>
</table>
</body>
</html>
<a href="<?php echo base_url(). 'crud/edit/'.$m->id; ?>">Edit</a>: Link ini akan mengarahkan pengguna ke methodeditpada controllercruddan mengirimkaniddari data yang akan diedit melalui URL.
Langkah 2: Membuat View Form Edit
Setelah link “Edit” diklik, pengguna akan diarahkan ke halaman form yang sudah terisi dengan data lama. Kita perlu membuat view baru untuk ini.
Buat file baru bernama v_edit.php di dalam folder application/views.
application/views/v_edit.php
<!DOCTYPE html>
<html>
<head>
<title>Edit Data Mahasiswa</title>
</head>
<body>
<center>
<h3>Edit Data Mahasiswa</h3>
</center>
<?php foreach($mahasiswa as $m){ ?>
<form action="<?php echo base_url(). 'crud/update'; ?>" method="post">
<table style="margin:20px auto;">
<tr>
<td>Nama</td>
<td>
<input type="hidden" name="id" value="<?php echo $m->id ?>">
<input type="text" name="nama" value="<?php echo $m->nama ?>">
</td>
</tr>
<tr>
<td>NIM</td>
<td><input type="text" name="nim" value="<?php echo $m->nim ?>"></td>
</tr>
<tr>
<td>Jurusan</td>
<td><input type="text" name="jurusan" value="<?php echo $m->jurusan ?>"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Update"></td>
</tr>
</table>
</form>
<?php } ?>
</body>
</html>
<?php foreach($mahasiswa as $m){ ?>: Kita menggunakan perulanganforeachuntuk mengambil data mahasiswa yang dikirim dari controller.value="<?php echo $m->nama ?>": Atributvaluepada setiap input diisi dengan data yang ada di database.<input type="hidden" name="id" value="<?php echo $m->id ?>">: Ini adalah field tersembunyi (hidden) yang sangat penting. Kita menyimpaniddata yang akan diedit agar bisa kita gunakan saat mengirimkan data ke methodupdatedi controller.
Langkah 3: Menambahkan Fungsi di Model
Pada model M_data.php, kita akan membuat dua fungsi:
edit_data(): Untuk mengambil data dari database berdasarkanid.update_data(): Untuk memperbarui data.
application/models/m_data.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class M_data extends CI_Model{
function tampil_data(){
return $this->db->get('mahasiswa');
}
function input_data($data, $table){
$this->db->insert($table, $data);
}
function hapus_data($where, $table){
$this->db->where($where);
$this->db->delete($table);
}
function edit_data($where, $table){
return $this->db->get_where($table, $where);
}
function update_data($where, $data, $table){
$this->db->where($where);
$this->db->update($table, $data);
}
}
edit_data($where, $table): Fungsi ini menggunakan$this->db->get_where()yang berfungsi untuk mengambil data dengan kondisiWHEREyang sudah ditentukan.update_data($where, $data, $table): Fungsi ini menggunakan$this->db->where()untuk menentukan kondisiWHEREdan$this->db->update()untuk menjalankan queryUPDATE.
Langkah 4: Menambahkan Method di Controller
Sekarang, kita tambahkan method edit() dan update() di controller Crud.php.
application/controllers/Crud.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Crud extends CI_Controller {
function __construct(){
parent::__construct();
$this->load->model('m_data');
$this->load->helper('url');
}
public function index(){
$data['mahasiswa'] = $this->m_data->tampil_data()->result();
$this->load->view('v_tampil', $data);
}
// Method lainnya (tambah, hapus, dll.)
public function edit($id){
$where = array('id' => $id);
$data['mahasiswa'] = $this->m_data->edit_data($where, 'mahasiswa')->result();
$this->load->view('v_edit', $data);
}
public function update(){
$id = $this->input->post('id');
$nama = $this->input->post('nama');
$nim = $this->input->post('nim');
$jurusan = $this->input->post('jurusan');
$data = array(
'nama' => $nama,
'nim' => $nim,
'jurusan' => $jurusan
);
$where = array('id' => $id);
$this->m_data->update_data($where, $data, 'mahasiswa');
redirect('crud/index');
}
}
edit($id): Method ini menerimaiddari URL. Kita membuat array$wheredan kemudian memanggil fungsiedit_data()dari model. Hasilnya kita kirimkan ke viewv_editmenggunakan array$data.update(): Method ini menerima data dari form.$this->input->post('id'): Kita mengambiliddari field tersembunyi.idini sangat penting untuk menentukan data mana yang akan diperbarui.$data: Kita mengemas data baru dari form ke dalam sebuah array.$where: Kita menentukan kondisi$whereberdasarkanidyang diterima.$this->m_data->update_data($where, $data, 'mahasiswa'): Memanggil fungsiupdate_datadari model untuk menjalankan proses update.redirect('crud/index'): Mengarahkan pengguna kembali ke halaman daftar mahasiswa setelah update berhasil.
Kesimpulan
Proses memperbarui data di CodeIgniter melibatkan tiga langkah utama:
- Mengambil Data Lama: Menggunakan Controller dan Model untuk mengambil data berdasarkan ID dan menampilkannya di form.
- Menampilkan Form Edit: Membuat View khusus yang berisi form dan data lama yang sudah terisi.
- Menjalankan Proses Update: Menggunakan Controller dan Model untuk memproses data baru dari form dan memperbarui data di database.
Dengan mengikuti alur MVC, proses ini menjadi terstruktur dan mudah dikelola. Anda sekarang sudah menguasai empat operasi dasar (CRUD: Create, Read, Update, Delete) di CodeIgniter!