
Proses Create, Update dan Delete (CRUD) adalah proses dasar dalam management data. Kali ini saya akan membangun proses CRUD dengan metode Ajax.
Data yang diinput adalah data karyawan, pertama-tama ciptakan dulu table karyawan dan master departement:
CREATE TABLE `master_pegawai` ( `ID` INT( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `NIP` CHAR( 5 ) NOT NULL , `Name` VARCHAR( 50 ) NOT NULL , `Address` VARCHAR( 255 ) NOT NULL , `Department` INT( 5 ) NOT NULL , UNIQUE (`NIP`) ); CREATE TABLE IF NOT EXISTS `master_department` ( `ID` int(5) NOT NULL AUTO_INCREMENT, `DepartmentName` varchar(50) NOT NULL, PRIMARY KEY (`ID`) ) ;
Isi data pada master department terlebih dahulu karena pada artikel kali ini saya akan berkonsentrasi pada management data master pegawai. Library javascript yang akan digunakan adalah:
- JQuery
- JQuery Ajax Form, untuk memproses data dari form dan request ke ajax lebih cepat dan mudah.
- JQuery Thickbox, untuk mengeluarkan popup form dengan metode Ajax.
Ada tiga file utama yang dapat anda temukan dengan fungsi masing-masing:
- index.php, menampung daftar lengkap pegawai dan menyediakan link untuk tambah, edit dan hapus data pegawai. Pada index.php juga di deklarasikan fungsi untuk request Ajax ketika tombol submit pada form ditekan.
- form.php, menampilkan form tambah atau edit data. File ini diakses melalui metode Ajax dengan bantuan popup Thickbox, jika file ini dipanggil dengan parameter ID pegawai maka form ini siap untuk mengedit satu record pegawai di database.
- proses.php, adalah file yang menjadi tempat request Ajax untuk menambah dan mengedit data. File ini akan mengembalikan nilai JSON untuk kemudian di proses index.php.
Isi file “index.php” pada bagian HEAD:
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | <script language="javascript" src="js/jquery.js"></script> <script language="javascript" src="js/thickbox.js"></script> <script language="javascript" src="js/jquery.form.js"></script> <script language="javascript" src="js/jsCalendar.js"></script> <script language="javascript"> /* Fungsi addRow untuk menambahkan baris pada table pegawai setelah Ajax berhasil melakukan proses tambah data pegawai */ function addRow(ID,NIP,Name,DeptName){ var str = '<tr id="tr'+ID+'">'; /* cara mengetahui jumlah baris pada table pegawai saat ini untuk membuat nomor urut data pada table */ var countLine = Object($('#tableBody tr')).length; str += '<td align="center">'+(countLine+1)+'</td>'; str += '<td align="center">'+NIP+'</td>'; str += '<td>'+Name+'</td>'; str += '<td>'+DeptName+'</td>'; str += '<td align=center><a href="form.php?width=370&height=230&id_pegawai='+ID+'" class="thickbox">Edit</a> '; str += '| <a href="javascript:deleteRow(\''+ID+'\')">Delete</a></td>'; str += '</tr>'; // kode html yang sudah disusun ditambahkan (append) ke dalam tag tbody $('#tableBody').append(str); /* setiap link dengan class='thickbox pada baris yang baru dibuat akan mempunyai fungsi mengeluarkan dialog thickbox ketika melakukan edit data */ tb_init('#tr'+ID+' td a.thickbox'); } // untuk mengedit data pada baris tertentu di table daftar pegawai function editRow(ID,NIP,Name,DeptName){ var element = '#tr'+ID; // ambil ID dari baris yang ingin diubah $(element+' td:nth-child(2)').text(NIP); // kolom kedua (NIP) dari baris diubah datanya $(element+' td:nth-child(3)').text(Name); // kolom ketiga (Nama) dari baris diubah datanya $(element+' td:nth-child(4)').text(DeptName); // kolom keempat (Department) dari baris diubah datanya } // untuk menghapus baris atau data pada table pegawai function deleteRow(ID){ // ID dari record pegawai dikirimkan sebagai parameter $.post( 'delete.php', {id_pegawai: ID}, function(response){ if(response == 'ok') // jika respon dari delete.php adalah 'ok' $('#tr'+ID).remove(); // hapus 1 baris else alert('Delete gagal'); } ); } /* fungsi submitForm akan dipanggil pada saat melakukan inputan pada form tambah atau edit pegawai. Di dalam fungsi ini ada fungsi ajaxSubmit yang merupakan plugin dari jquery yaitu jquery.form.js */ function submitForm(){ // beri tanda bahwa data sedang di proses dengan efek loading fade in $('#divResult').text('loading...').fadeIn(); $('#formData').ajaxSubmit({ success: function(response){ // sembunyikan element tempat hasil respon sementara agar efek fade in lebih nyata $('#divResult').hide(); /* respon yang diterima berupa json dengan struktur {status:(nomor status), IDPegawai: (id dari pegawai)}*/ if(response.status == 1){ /* jika nilai status adalah 1 berarti ada error dan response.text yang merupakan pesan error akan ditampilkan di element dengan ID = divResult */ // pesan error diberi efek fade in dengan background warna merah $('#divResult').text(response.text).css({'color':'#FFFFFF','background-color':'#FF0000'}).fadeIn(); }else if(response.status == 2){ /* jika nilai status adalah 2 maka tandanya sedang berlangsung proses penambahan data pegawai baru oleh karena itu fungsi yang dipakai selanjutnya adalah addRow untuk menambah baris di table pegawai */ // pesan sukses diberi efek fade in dengan background warna kuning $('#divResult').text('Data berhasil ditambah').css({'color':'#000000','background-color':'#FFFF00'}).fadeIn(); addRow( response.IDPegawai, $('input[@name=NIP]').val(), $('input[@name=Name]').val(), $('select[@name=Department] option:selected').text() ); tb_remove(); }else if(response.status == 3){ /* jika nilai status adalah 3 maka sedang berlangsung proses edit data pegawai maka fungsi yang dipanggil selanjutnya adalah fungsi editRow untuk mengedit baris data pegawai yang sudah diubah di form */ // pesan sukses diberi efek fade in dengan background warna kuning $('#divResult').text('Data berhasil diedit').css({'color':'#000000','background-color':'#FFFF00'}).fadeIn(); editRow( $('input[@name=ID]').val(), $('input[@name=NIP]').val(), $('input[@name=Name]').val(), $('select[@name=Department] option:selected').text() ); tb_remove(); } }, dataType: 'json' // menandakan bahwa ajax menginginkan respon berupa json }); return false; } </script> |
Isi file “index.php” pada bagian BODY:
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | <table cellspacing="0" cellpadding="4" border="1" width="500">
<thead>
<tr bgcolor="#CCCCCC">
<th>No</th>
<th>NIP</th>
<th>Nama</th>
<th>Department</th>
<th>Action</th>
</tr>
</thead>
<tbody id="tableBody"><?
include 'connect.inc.php';
$query = mysql_query('SELECT p.*,d.DepartmentName FROM master_pegawai p JOIN master_department d ON p.Department = d.ID');
if($query && mysql_num_rows($query) > 0){
$x = 1;
while($row = mysql_fetch_object($query)){
echo "<tr id='tr{$row->ID}'>
<td align='center'>$x</td>
<td align='center'>{$row->NIP}</td>
<td>{$row->Name}</td>
<td>{$row->DepartmentName}</td>
<td align='center'><a class='thickbox' href='form.php?id_pegawai={$row->ID}&width=370&height=230'>Edit</a>
| <a href='javascript:deleteRow(\"{$row->ID}\")'>Delete</a></td>
</tr>";
$x++;
}
}
?></tbody>
</table>
<br /><a href="form.php?width=370&height=230" class="thickbox" title="Tambah Data Pegawai">Tambah Data Pegawai</a> |
Isi file “form.php” berikut penjelasannya:
<? include 'connect.inc.php'; $id = isset($_GET['id_pegawai']) ? intval($_GET['id_pegawai']) : false; if($id){ $query = mysql_query('SELECT * FROM master_pegawai WHERE ID = "'.$id.'"'); if($query && mysql_num_rows($query) == 1){ $data = mysql_fetch_object($query); }else die('Data pegawai tidak ditemukan'); } ?> <div id="divResult" style="font-size:11px;text-align:center;display:none"></div> <form action="process.php" method="post" id="formData" onSubmit="return submitForm();"> <table> <tr> <td>NIP</td> <td>:</td> <td><input type="text" name="NIP" size="6" maxlength="6" value="<?=@$data->NIP?>" onKeyUp="this.value = String(this.value).toUpperCase()" /></td> </tr> <tr> <td>Nama Pegawai</td> <td>:</td> <td><input type="text" name="Name" size="30" value="<?=@$data->Name?>" /></td> </tr> <tr valign="top"> <td>Alamat</td> <td>:</td> <td><textarea name="Address" rows="6" cols="30"><?=@$data->Address?></textarea></td> </tr> <tr> <td>Departement</td> <td>:</td> <td> <select name="Department"> <? $query = mysql_query('SELECT * FROM master_department'); if($query && mysql_num_rows($query) > 0){ while($row = mysql_fetch_object($query)){ echo '<option value="'.$row->ID.'"'; if($row->ID == @$data->Department) echo ' selected'; echo '>'.$row->DepartmentName.'</option>'; } } ?> </select> </td> </tr> <tr> <td> </td> <td> </td> <td> <input type="hidden" name="ID" value="<?=@$data->ID?>" /> <input type="submit" name="submit" value="Simpan" /> <input type="button" value="Batal" onClick="tb_remove()" /> </td> </tr> </table> </form>
Isi file “proses.php” berikut penjelasannya:
<? /* proses.php akan menjadi file yang di request oleh Ajax dan akan mengembalikan nilai dengan struktur JSON */ if(isset($_POST['ID'])){ include 'connect.inc.php'; $ID = getPost('ID'); $NIP = getPost('NIP'); $Name = getPost('Name'); $Address = getPost('Address'); $Department = getPost('Department'); if($NIP && $Name){ if($ID){ $SQLUpdate = "UPDATE master_pegawai SET NIP = '$NIP', Name = '$Name', Address = '$Address', Department = '$Department' WHERE ID = '$ID'"; $query = mysql_query($SQLUpdate) or die(mysql_error()); echo '{status:3}'; // memberikan respon nilai status = 3 ketika berhasil mengedit }else{ $SQLInsert = "INSERT INTO master_pegawai (NIP,Name,Address,Department) VALUES('$NIP','$Name','$Address','$Department')"; $query = mysql_query($SQLInsert) or die(mysql_error()); $lastID = mysql_insert_id(); /* memberikan respon nilai status = 2 dan ID dari record pegawai ketika berhasil menambah data pegawai baru */ echo '{status:2,IDPegawai:'.$lastID.'}'; } // mengembalikan respon nilai status = 1 dan text error message }else echo '{status:1,text:"Lengkapi Isi Form. NIP dan Nama Harus Diinput"}'; } ?>
Untuk melihat demo klik link ini.
Untuk download source program klik link ini.
Terima kasih atas kunjungannya, maaf sudah lama menunggu perkembangan artikel di website ini, penulis lagi banyak banget kerjaan…hehehe ^_^

(9 votes, average: 4.89 out of 5)
Chandra Jatnika



21 Responses
Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.
pertamax juragan……
terima kasih mas chandra…atas tutoriallnya…
Blog anda OK dan unik Banget!. Submit tulisan anda di Kombes.Com Bookmarking, Agar member kami vote tulisan anda. Silakan submit/publish disini : http://bookmarking.kombes.com Semoga bisa lebih mempopulerkan blog/tulisan anda!
Kami akan sangat berterima kasih jika teman blogger memberikan sedikit review/tulisan tentang Kombes.Com Bookmarking pada blog ini.
Salam hormat
http://kombes.Com
keren mas tutorialnya…
mantab….gan….terus share yach…
mantap mas chandra, makin cihuy aja neh..
ajarin dong…
Keren Mas,
sekalian pagingnya donk
Makasih
wah jadi tertarik nih belajar bikin aplikasi berbasis web…
tengkiu pak …
MANTAB ini yang lagi ku butuhkan, terima kasih banyak mas……
excellent..
keep posting, mas..
2 thumbs…
semoga ilmunya terus bertambah……..
wah keren nih… terima kasih mas
mantaaaaaaaaab Om salam kenal neh aku dah browsing ke mana mana gak ketemu eh iseng iseng cari lagi alhamdulilah ketemu web nya ente om makasih bgt om bantuan nya
salam…. Ijoks
siip bro tutornnya. saat mengedit data gimana mas caranya agar bis seperti saat mengadd data baru. kirim di email juga….
mantap2 nih tutorialnya..master ariel….
keren Kang
saya lagi belajar web programming nih, terima kasih
hidup programmer
Thank for ur tutorial
ok bangeet dah. trims
waahh ..
sipp ..
bner’ bermanfaat ..
thanks ..
thx kkak tuk tutornya..
berguna banget
Continuing the Discussion