Di tulisan kali ini saya akan melanjutkan tutorial CRUD menggunakan CodeIgniter yaitu Framework PHP yang belakangan ini sedang naik daun. Kalo di dunia hiburan tanah air, ada Anang dan Ashanty yang sedang naik daun, namun di dunia pemrograman CodeIgniter aka CI inilah yang sedang banyak digunakan oleh web developer untuk mengembangkan aplikasinya.
Di tutorial sebelumnya, aplikasi yang kita buat sudah bisa menampilkan data dari database dan disertai dengan fitur tambah data. Jika pembaca tidak mengikuti tutorial ini dari awal, silahkan loncat ke Part I, Part II atau Part III. Di tutorial ini kita akan menambahkan fitur edit dan delete data.Nah sebelum kita mulai, sebagai referensi anda bisa mendownload source code lengkap dari project yang kita kerjakan ini di sini.
Setelah berhasil menambahkan fitur untuk menambahkan data, mari kita tambahkan fitur untuk mengedit data. Nah, langkah pertama yang harus kita lakukan adalah mengedit file /application/views/viewmahasiswa.php. Yang perlu kita ubah adalah menambahkan link Ubah atau Edit pada tabel data. Jadi ketika link di klik, user akan dibawa ke form untuk mengedit data mahasiswa yang sudah dipilih. Tambahkan saja code yang bercetak tebal.
Nah apa maksud fungsi achor() tersebut? Fungsi anchor() digunakan untuk membuat link atau tautan. Parameter pertama merupakan alamat URL yang akan dituju, (setiap parameter dipisahkan dengan koma) sedangkan parameter kedua merupakan teks yang akan ditampilkan dalam halaman website. Parameter ketiga kita menambahkan event onClick dimana ketika link diklik akan menjalankan fungsi edit(). Kemudian kita menambahkan sebuah tombol lagi untuk mengupdate data. Ketika website pertama kali diakses, tombol tersebut dalam keadaan tersembunyi maka dari itu kita tambahakan atribut style="display:none".<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <html> <head> <title><?php echo $judul ?></title> <link href="<?php echo base_url()?>css/style.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="<?php echo base_url()?>js/jquery-1.4.js"></script> <script> $().ready(function(){ $("#tombolTambah").click(function(){ $.ajax({ url : "<?php echo base_url() ?>index.php/conmahasiswa/tambah", beforeSend: function(){ $("#data").html("Loading..."); }, success: function(html){ $("#data").html(html); $("#btnSimpan").show(); $("#tombolTambah").hide(); } }); }); $("#btnSimpan").click(function(){ var nim = $("#nim").val(); var nama = $("#nama").val(); var jurusan = $("#jurusan").val(); var angkatan = $("#angkatan").val(); var ipk = $("#ipk").val(); $.ajax({ url : "<?php echo base_url() ?>index.php/conmahasiswa/tambah", type: "post", beforeSend: function(){ $("#data").html("Loading..."); }, data : "nim="+nim+"&nama="+nama+"&jurusan="+jurusan+"&angkatan="+angkatan+"&ipk="+ipk, success: function(html){ $("#tombolTambah").show(); $("#btnSimpan").hide(); $("#data").load("<?php echo base_url() ?>index.php/conmahasiswa/index/ #data"); $("#notifikasi").html('Data berhasil disimpan'); $("#notifikasi").fadeIn(2500); $("#notifikasi").fadeOut(2500); } }); }); }); </script> <head> <body> <div id="notifikasi" style="display:none"></div> <div id="wraper"> <div id="header"> <h2>CRUD Dengang CodeIgniter + Ajax + JQuery</h2> </div> <div id="content"> <div id="paneltombol"> <input type="button" class="tombol" id="btnSimpan" value="Simpan" style="display:none"> <input type="button" class="tombol" id="tombolTambah" name="tombolTambah" value="Tambah Data"> <input type="button" class="tombol" id="tombolUpdate" name="tombolUpdate" value="Update" style="display:none"> </div> <div id="data"> <table border="0" width="100%" cellspacing="0" > <tr> <th>Nim</th> <th>Nama</th> <th>Jurusan</th> <th>Angkatan</th> <th>IPK</th> <th colspan="2">Aksi</th> </tr> <?php foreach($mahasiswa as $baris):?> <tr> <td><?php echo $baris->nim ?></td> <td><?php echo $baris->nama ?></td> <td><?php echo $baris->jurusan ?></td> <td><?php echo $baris->angkatan ?></td> <td><?php echo $baris->ipk ?></td> <td width="30"><?php echo anchor("#",'Edit',array('onClick'=>'return edit('.$baris->nim.')')) ?></td> <td width="30"><?php echo anchor("#",'Edit',array('onClick'=>'return hapus('.$baris->nim.')')) ?></td> </tr> <?php endforeach ?> </table> </div> </div> </div> </body> </html>
Nah selanjutnya kita tambahkan function baru di /application/models/modelmahasiswa.php untuk mengambil data berdasarkan nim mahasiswa.
Fungsi di atas akan mengembalikan nilai berupa object yang merupakan hasil query:function DataMahasiswa($nim){ return $this->db->get_where('mahasiswa',array('nim'=>$nim))->result(); }
Nah selanjutnya, mari kita tambahkan function edit di /application/controllers/conmahasiswa.php.select * from mahasiswa where nim = $data
Dalam fungsi edit, kita meload view editmahasiswa kemudian mari kita buat sebuah view bernama editmahasiswa.php di /application/viewsfunction edit($nim = NULL) { $data['mahasiswa'] = $this->modelmahasiswa->DataMahasiswa($nim); $this->load->view('editmahasiswa',$data); }
Selanjutnya mari kita buat function edit() di viewmahasiswa.php. Tambahkan code berikut di akhir tag <script><?php foreach($mahasiswa as $baris): ?> <form id='formmahasiswa'> <div> <label>Nim</label> <input type="text" name="nim" id="nim" size="30" value="<?php echo $baris->nim ?>"> </div> <div> <label>Nama</label> <input type="text" name="nama" id="nama" size="30" value="<?php echo $baris->nama ?>"> </div> <div> <label>Jurusan</label> <input type="text" name="jurusan" id="jurusan" size="30" value="<?php echo $baris->jurusan ?>"> </div> <div> <label>Angkatan</label> <input type="text" name="angkatan" id="angkatan" size="30" value="<?php echo $baris->angkatan ?>"> </div> <div> <label>IPK</label> <input type="text" name="ipk" id="ipk" size="30" value="<?php echo $baris->ipk ?>"> </div> </form> <?php endforeach ?>
Nah, coba ketikan http://localhost/webku/ di web browser anda dan coba klik salah satu link edit yang sudah anda buat. Apakah sudah muncul form berisikan data mahasiswa yang dipilih? Kira-kira hasilnya akan seperti berikut:function edit(nim){ $().ready(function(){ $.ajax({ url : "<?php echo base_url() ?>index.php/conmahasiswa/edit/"+nim, beforeSend: function(){ $("#data").html("Loading..."); }, success: function(html){ $("#tombolUpdate").show(); $("#tombolTambah").hide(); $("#data").html(html); } }); }); }
Edit Data |
Selanjutnya kita perlu menambahkan function baru untuk mengupdate data mahasiswa. Tambahkan function berikut di /application/models/modelmahasiswa.php
Kemudian tambahkan function untuk mengupdate data sesuai dengan inputan dari user. Tambahkan code berikut di controller /application/controllers/conmahasiswa.php.function updateMahasiswa($data = array()){ $this->db->where('nim',$data['nim'])->update('mahasiswa',$data); }
Dan terakhir kita tambahkan fungsi untuk tombol update. Jadi ketika tombol update diklik, fungsi Ajax akan dijalankan dengan type post, dengan URL http://localhost/webku/conmahasiswa/update/ dan data sesuai dengan inputan dari user. Tambahkan code berikut di bawah fungsi $("#btnSImpan").click().function update(){ $nim = $this->input->post('nim'); $nama = $this->input->post('nama'); $jurusan = $this->input->post('jurusan'); $angkatan = $this->input->post('angkatan'); $ipk = $this->input->post('ipk'); $data=array( 'nim' => $nim, 'nama' => $nama, 'jurusan' => $jurusan, 'angkatan' => $angkatan, 'ipk' => $ipk ); $this->modelmahasiswa->updateMahasiswa($data); }
Nah, sampai di sini proses edit-update kita sudah selesai, cobalah untuk mengedit sebuah data kemudian tekan tombol update.$("#tombolUpdate").click(function(){ var nim = $("#nim").val(); var nama = $("#nama").val(); var jurusan = $("#jurusan").val(); var angkatan = $("#angkatan").val(); var ipk = $("#ipk").val(); $.ajax({ url : "<?php echo base_url() ?>index.php/conmahasiswa/update", type: "post", beforeSend: function(){ $("#data").html("Loading..."); }, data : "nim="+nim+"&nama="+nama+"&jurusan="+jurusan+"&angkatan="+angkatan+"&ipk="+ipk, success: function(html){ $("#tombolTambah").show(); $("#tombolUpdate").hide(); $("#data").load("<?php echo base_url() ?>index.php/conmahasiswa/index/ #data"); $("#notifikasi").html('Data berhasil diedit'); $("#notifikasi").fadeIn(2500); $("#notifikasi").fadeOut(2500); } }); });
Selanjutnya kita buat fungsi delete di modelmahasiswa.php. Tambahkan fungsi berikut berikut ini.di /application/models/modelmahasiswa.php
function deleteMahasiswa($nim) { $this->db->where('nim',$nim)->delete('mahasiswa'); }
Selanjutnya tambahkan fungsi delete di comahasiswa.php
Dan yang terakhir adalah menambahkan function hapus di akhir tag <script>function delete($nim){ $this->modelmahasiswa->deleteMahasiswa($nim); }
Nah, ketika kita mengklik link hapus, maka akan tampil pesan konfirmasi apakah data yang dipilih akan dihapus atau tidak. Jika user mengkonfirmasi, maka yang dipilih akan dihapus.function hapus(nim){ if(confirm('Yakin Menghapus?')){ $().ready(function(){ $.ajax({ url : "<?php echo base_url() ?>index.php/conmahasiswa/delete/"+nim, beforeSend: function(){ $("#data").html("Loading..."); }, success: function(html){ $("#tombolUpdate").hide(); $("#tombolTambah").show(); $("#data").load('<?php echo base_url() ?>index.php/conmahasiswa/index/ #data'); } }); }); } }
Nah, selesai sudah aplikasi CRUD sederhana kita menggunakan CodeIgniter, Ajax dan JQuery. Semoga bermanfaat. Jika anda ingin mendapatkan source code langkap dari project yang telah kita kerjakan ini, anda bisa download di sini.
boss, ini pakai ci yg versi berapa?
BalasHapuskalo di liat dari tutorial awal udah pake ci 2.x. :)
HapusTutorialnya mantap Bos, thx
BalasHapusThanks bang.
Hapusbro, ko yang saya buat tombol simpan sama updatenya ga berfungsi yah? kenapa ya?
BalasHapussudah dicek-cek mas? Coba mas install Firebug di browser yang mas pake. Biar lebih gampang melihat errornya mas.
Hapusmas kalo codeigniter itu khusus buat OS linux bukan apa di windows juga suport ?
BalasHapusthx mas
CodeIgniter itu framework PHP. PHP adalah bahasa pemrograman yang multiplatform, jadi bisa dijalankan di Linux maupun Windows.
Hapusitu jquery nya kasih link download nya dunk mas, sama css nya.
BalasHapuskan jquery.js sama style.css nya kan gk sembarang file..
JQuerynya bisa didapetin langsung dari website resminya mas. Pake jquery versi berapa aja ngga masalah. CSSnya bisa dengan kreasi sendiri mas, itu udah sederhana banget kok.
Hapusbisa share cara membuat website company profile dari awal sampe akhir ?
BalasHapusmakasih
Oke deh bang, nanti saya buatkan. Masih agak sibuk nih Hehehehe
Hapusmakasih mas buda suyana.. saya sangat terbantu sekali..
BalasHapustp mau nanya lagi ni :)
index.php/conmahasiswa/index/ #data
#data tu maksudnya apa ya mas...
atau fungsi nya untuk apa ya?..
@Budi Irawan: Jadi itu fungsinya untuk mereload data yang ada di database. Nah hasil reload tadi diletakan kembali ke dalam div data. Jadi setelah data disimpan, program akan meminta lagi data yang baru ke database. Thanks atas pertanyaannya bang. Terima kasih udah berkunjung :D
BalasHapus1. $("#data").load('
Hapus2. index.php/conmahasiswa/index/ #data');
:( maaf mas suyana saya masih blum faham..
kalau #data baris pertama tu sya ngerti si
cuman #data yg di baris kedua itu saya gk faham maksudnya..
Mantap tutorialnya,
BalasHapustapi mas suyana, bagaimana cara edit/hapus data dengan 2 parameter?
Terimakasih
gan mantap tutorilanya..
BalasHapusgan boleh request gak, ane coba custom" soalnya ga bs"/blm berhasil..
bisa bantu gak gan nambain paging + searching di tutorial ente,.
sblmnya terimak kasih ..
oia gan, ada bugnya nih satu,
Hapusknp ya kadang edit di klik kudu 2x..
_^,
knp pake ini :
Hapus" a href="#" onclick="return edit(id ?>)">Edit'return edit('.$baris->nim.')')) "
bug diatas hilang...
numpang jawab mas buda suyasa..
Hapusuntuk yg klik 2 kali tu coba ubah kode ini :
succes : function(html)
ubah menjadi :
succes : function(data)
semoga membantu :)
untuk yg klik 2 kali itu coba buka conffig.php
Hapusubah $config['index_page'] = 'index.php';
jadi $config['index_page'] = '';
Gan kalo programnya dikembangin pake ajax pagination gimana?
BalasHapusthanks a lot, gan
BalasHapusA Database Error Occurred
BalasHapusError Number: 1146
Table 'mahasiswa.mahasiswa' doesn't exist
SELECT * FROM (`mahasiswa`)
Filename: C:\xampp\htdocs\Ignitiercode.com\system\database\DB_driver.php
Line Number: 330
mantap gan sangat membantu
BalasHapusmantap mas bro :)
BalasHapusijin sedot ya
Mas klw di buat multi insert gmn ya???cara nya???
BalasHapus