Belajar Membuat Simple Add, Edit, Delete dan Search Data beserta Pagination berbasis Ajax dengan Jquery dan PHP
Dalam mengelola data utama pada sebuah aplikasi maka dibutuhkan fungsi-fungsi yang dapat menangani proses penambahan data (Add), perubahan data (Edit), penghapusan data (Delete) dan pencarian data (Search). Tulisan kali ini akan membahas bagaimana membuat sebuah aplikasi sederhana berbasis web untuk dapat menangani fungsi-fungsi tersebut termasuk menampilkan data dengan pagination dimana di dalamnya telah menerapkan mekanisme Ajax. Aplikasi web yang dibahas pada tulisan ini, sebenarnya dibuat berdasarkan aplikasi yang telah dibahas sebelumnya pada sebuah blog yang ada di sini, matur nuwun 😀 Dari aplikasi web tersebut, kemudian ditambahkan fungsi pencarian data dan menampilkan data dengan pagination. Untuk menerapkan mekanisme Ajax pada aplikasi web tersebut, dalam pembahasan ini digunakan sebuah javascript library yakni Jquery dan didukung bahasa pemrograman PHP. Selain itu, untuk menangani pagination dalam menampilkan data digunakan sebuah class yang dibuat oleh Reneesh T K.
Baik, langsung menuju ke bagian pembahasan. Aplikasi web sederhana yang dibahas disini akan berkaitan dengan pengelolaan data-data pelanggan. Berikut ini merupakan langkah-langkah yang perlu dilakukan.
Pertama adalah membuat tabel data pelanggan terlebih dahulu.
CREATE TABLE IF NOT EXISTS `tbl_pelanggan` ( `id_pelanggan` varchar(5) COLLATE latin1_general_ci NOT NULL, `nama_pelanggan` varchar(25) COLLATE latin1_general_ci NOT NULL, `alamat` varchar(50) COLLATE latin1_general_ci NOT NULL, `no_hp` varchar(15) COLLATE latin1_general_ci NOT NULL, PRIMARY KEY (`id_pelanggan`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
Selanjutnya adalah membuat file-file pendukung utama, seperti berikut ini.
1. config.php
merupakan file yang digunakan untuk melakukan pengaturan koneksi ke database.
<?php $mysql_hostname = "localhost"; //alamat server $mysql_user = "username"; //username untuk koneksi ke database $mysql_password = "password"; //password koneksi ke database, klo tidak ada bisa dikosongkan $mysql_database = "database"; //nama database yang akan diakses/digunakan mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or die("Koneksi ke database gagal!"); mysql_select_db($mysql_database) or die("Database tidak ditemukan!"); ?>
2. style-page.css
merupakan file css untuk mengatur tampilan web.
/**********************************/ /* CSS Document */ /* filename : style-page.css */ /**********************************/ body{ font-family: Verdana,Tahoma,sans-serif; font-size: 8pt; color: #333333; } input,textarea,select{ font-family: Verdana,Tahoma,sans-serif; font-size: 8pt; } table { font-family: Verdana; font-size: 8pt; border-width: 1px; border-style: solid; border-color: #ccd2d2; border-collapse: collapse; background-color: #f9f9f9; margin: 10px 0px; } th { color: #FFFFFF; font-size: 7pt; text-transform: uppercase; text-align: center; padding: 0.5em; border-width: 1px; border-style: solid; border-color: #ccd2d2; border-collapse: collapse; background-color: #7D7D7D; } td { padding: 0.5em; color: #272727; vertical-align: top; border-width: 1px; border-style: solid; border-color: #ccd2d2; border-collapse: collapse; } /* -- untuk menangani tampilan pagination */ ul{border:0; margin:0; padding:0;} #pagination li{ border:0; margin:0; padding:0; font-size:11px; list-style:none; } #pagination a{ border:solid 1px #DDDDDD; margin-right:2px; } #pagination .previous-off, #pagination .next-off { color:#666666; display:block; float:left; font-weight:bold; padding:3px 4px; } #pagination .next a, #pagination .previous a { font-weight:bold; border:solid 1px #FFFFFF; } #pagination .active{ color:#ff0084; font-weight:bold; display:block; float:left; padding:4px 6px; } #pagination a:link, #pagination a:visited { color:#0063e3; display:block; float:left; padding:3px 6px; text-decoration:none; } #pagination a:hover{ border:solid 1px #666666; } /* -- tampilan tabel selang-seling */ .odd { background-color: #EDEFE9; } .even { background-color: #f9f9f9; }
3. index.php
merupakan halaman utama, dimana menampung tampilan data pelanggan, form pencarian data pelanggan, dan form pelanggan.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Simple Add Edit Delete Search & Pagination berbasis Ajax dengan JQuery</title> <link rel="stylesheet" type="text/css" href="css/style-page.css" /> <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script> <script type="text/javascript" src="js/pelanggan.js"></script> </head> <body> <div id="divFormContent"></div> <br /><input type="button" value="Tambah Pelanggan" id="btntambah"><input type="button" value="Tampilkan/Sembunyikan" id="btnhide" /><br /><br /> <div id="divSearch"> <form id="formSearch"> <table><tr> <td>Cari Berdasarkan</td><td><select id="pilihcari"> <option value="namapelanggan">Nama Pelanggan</option> <option value="idpelanggan">ID Pelanggan</option> <option value="semua">Semua</option> </select></td> <td id="kolompilih"><input type="text" name="fieldcari" id="fieldcari" /></td><td> <input type="submit" value="Cari" /></td> </tr></table> </form><br /> </div> <div id="divLoading"></div> <div id="divPageData"></div> </body> </html>
4. pelanggan.js
merupakan file yang berisi kode-kode jquery untuk menangani request Ajax.
$(document).ready(function(){ //menangkap error dan men-set parameter global (timeout, dll) $.ajaxSetup({ timeout: 10000, cache: false, error:function(x,e){ if(x.status==0){ alert('Anda sedang offline!\nSilahkan cek koneksi anda!'); }else if(x.status==404){ alert('Permintaan URL tidak ditemukan!'); }else if(x.status==500){ alert('Internal Server Error!'); }else if(e=='parsererror'){ alert('Error.\nParsing JSON Request failed!'); }else if(e=='timeout'){ alert('Request Time out!'); }else { alert('Error tidak diketahui: \n'+x.responseText); } } }); // menampilkan image untuk menandakan proses Ajax sedang berlangsung atau telah selesai $('#divLoading').ajaxStart(function(){ $(this).fadeIn(); $(this).html("<img src='images/ajax-loader.gif' /> "); }).ajaxStop(function(){ $(this).fadeOut(); }); $("#btnhide").hide(); // ketika tombol tambah di-klik, maka formpelanggan akan ditampilkan pada bagian #divFormContent $("#btntambah").click(function(){ page="formpelanggan.php"; $("#divFormContent").load(page); $("#divFormContent").show(); $("#btnhide").show(); return false; }); $("#btnhide").click(function(){ $("#divFormContent").toggle(); return false; }); //menangani jika user melakukan pilihan pada combo #pilihcari $("select#pilihcari").change(function(){ if ($(this).val() == "idpelanggan"){ $("td#kolompilih").show(); $("input#fieldcari").show(); $("input#fieldcari").focus(); } else if ($(this).val() == "namapelanggan"){ $("td#kolompilih").show(); $("input#fieldcari").show(); $("input#fieldcari").focus(); } else{ $("td#kolompilih").hide(); } }); //menampilkan list data pelanggan loadData(); // fungsi untuk me-load tampilan list data pelanggan, data yang ditampilkan disesuaikan // juga dengan input data pada bagian search function loadData(){ var dataString; var cari = $("input#fieldcari").val(); var combo = $("select#pilihcari").val(); if (combo == "namapelanggan"){ dataString = 'nama='+ cari; } else if (combo == "idpelanggan"){ dataString = 'id='+ cari; } $.ajax({ url: "page_data.php", type: "GET", data: dataString, success:function(data) { $('#divPageData').html(data); } }); } // melakukan pemrosesan data untuk bagian search (pencarian data) $("form#formSearch").submit(function(){ var cari = $("input#fieldcari").val(); var combo = $("select#pilihcari").val(); if (cari.replace(/\s/g,"") != ""){ // mengecek field text kosong atau tidak) loadData(); } else if ((cari.replace(/\s/g,"") == "") && (combo != "semua") ){ alert("Maaf, field harus diisi!"); $("input#fieldcari").focus(); } else{ loadData(); } return false; }); });
5. formpelanggan.php
merupakan file yang berisi kode-kode untuk form pelanggan, dimana form pelanggan nantinya akan ditampilkan untuk menangani fungsi penambahan/perubahan data pelanggan. form ini ditampilkan dengan mekanisme Ajax pada halaman index.php.
<?php include_once("config.php"); $action="add"; $judul="Penambahan Data Pelanggan"; $nama=""; $alamat=""; $nohp=""; $status="Tambah"; if(isset($_GET['action']) and $_GET['action']=="update" and !empty($_GET['id'])) { $str="select * from tbl_pelanggan where id_pelanggan = '$_GET[id]'"; $res=mysql_query($str) or die("query gagal dijalankan"); $data=mysql_fetch_assoc($res); $idplgn=$data['id_pelanggan']; $nama=$data['nama_pelanggan']; $alamat=$data['alamat']; $nohp=$data['no_hp']; $action="update"; $readonly="readonly=readonly"; $status="Update"; $judul="Update Data Pelanggan"; } ?> <script type="text/javascript"> $(function(){ $("input#namapelanggan").focus(); function loadData(){ var dataString; var cari = $("input#fieldcari").val(); var combo = $("select#pilihcari").val(); if (combo == "namapelanggan"){ dataString = 'nama='+ cari; } else if (combo == "idpelanggan"){ dataString = 'id='+ cari; } $.ajax({ url: "page_data.php", type: "GET", data: dataString, success:function(data) { $('#divPageData').html(data); } }); } $("form#formPelanggan").submit(function(){ if (confirm("Apakah benar akan menyimpan data pelanggan ini?")){ var vNama = $("input#namapelanggan").val(); var vAlamat = $("textarea#alamat").val(); var vNoHP = $("input#nohp").val(); var myRegExp=/^\+62[0-9]+$/; // cek validasi form dahulu, semua field data harus diisi if ((vNama.replace(/\s/g,"") == "") || (vAlamat.replace(/\s/g,"") == "") || (vNoHP.replace(/\s/g,"") == "")) { alert("Mohon melengkapi semua field data!"); $("input#namapelanggan").focus(); return false; } // cek validasi no handphone else if (!myRegExp.test(vNoHP)){ alert ('No handphone harus angka dan diawali +62 (contoh: +62818040567890)'); $("input#nohp").focus(); return false; } else{ $.ajax({ url: "proses_data.php", type:$(this).attr("method"), //metode yg digunakan sesuai pada form, dalam hal ini 'POST' data:$(this).serialize(), //mengirim data secara serialize -- seluruh data input dikirim untuk diproses dataType: 'json', //respon yang diminta dalam format JSON success:function(response){ if(response.status == 1) // return nilai dari hasil proses { alert("Data berhasil disimpan!"); loadData(); //reload list data $("#divFormContent").load("formpelanggan.php"); $("#divFormContent").hide(); $("#btnhide").hide(); } else { alert("Data gagal di simpan!"); } } }); return false; } } return false; }); }); </script> <form method="post" name="formPelanggan" action="" id="formPelanggan"> <table> <tr><th colspan="2"><b><?php echo $judul; ?></b></th></tr> <?php if ($action == "update"){?> <!-- //jika update maka textfield ID Pelanggan ditampilkan --> <tr><td>ID Pelanggan</td><td><input type="text" id="idpelanggan" name="idpelanggan" size="10" <?php echo $readonly;?> value="<?php echo $idplgn;?>" /></td></tr> <?php }?> <tr><td>Nama Pelanggan</td><td><input type="text" id="namapelanggan" name="namapelanggan" size="30" maxlength="25" value="<?php echo $nama;?>" /></td></tr> <tr><td>Alamat</td><td><textarea id="alamat" name="alamat" cols="50" rows="1"><?php echo $alamat;?></textarea></td></tr> <tr><td>No. Handphone</td><td><input type="text" id="nohp" name="nohp" size="20" maxlength="15" value="<?php echo $nohp;?>" /> *) diawali dengan +62 (contoh: +62818034567890)</td></tr> <tr><td colspan="2"><input type="submit" value="<?php echo $status;?>" /></td></tr> </table> <input type="hidden" name="action" value="<?php echo $action;?>" /> </form>
6. pagination_class.php
merupakan class untuk menangani pagination, yang dibuat oleh Reneesh T K.
<?php /* Developed by Reneesh T.K reneeshtk@gmail.com You can use it with out any worries...It is free for you..It will display the out put like: First | Previous | 3 | 4 | 5 | 6 | 7| 8 | 9 | 10 | Next | Last Page : 7 Of 10 . Total Records Found: 20 */ class Pagination_class{ var $result; var $anchors; var $total; function Pagination_class($qry,$starting,$recpage) { $rst = mysql_query($qry) or die(mysql_error()); $numrows = mysql_num_rows($rst); $qry .= " limit $starting, $recpage"; $this->result = mysql_query($qry) or die(mysql_error()); $next = $starting+$recpage; $var = ((intval($numrows/$recpage))-1)*$recpage; $page_showing = intval($starting/$recpage)+1; $total_page = ceil($numrows/$recpage); if($numrows % $recpage != 0){ $last = ((intval($numrows/$recpage)))*$recpage; }else{ $last = ((intval($numrows/$recpage))-1)*$recpage; } $previous = $starting-$recpage; $anc = "<ul id='pagination'>"; if($previous < 0){ $anc .= "<li class='previous-off'>First</li>"; $anc .= "<li class='previous-off'>Previous</li>"; }else{ $anc .= "<li class='next'><a href='javascript:pagination(0);'>First </a></li>"; $anc .= "<li class='next'><a href='javascript:pagination($previous);'>Previous </a></li>"; } ################If you dont want the numbers just comment this block############### $norepeat = 2;//no of pages showing in the left and right side of the current page in the anchors $j = 1; $anch = ""; for($i=$page_showing; $i>1; $i--){ $fpreviousPage = $i-1; $page = ceil($fpreviousPage*$recpage)-$recpage; $anch = "<li><a href='javascript:pagination($page);'>$fpreviousPage </a></li>".$anch; if($j == $norepeat) break; $j++; } $anc .= $anch; $anc .= "<li class='active'>".$page_showing."</li>"; $j = 1; for($i=$page_showing; $i<$total_page; $i++){ $fnextPage = $i+1; $page = ceil($fnextPage*$recpage)-$recpage; $anc .= "<li><a href='javascript:pagination($page);'>$fnextPage</a></li>"; if($j==$norepeat) break; $j++; } ############################################################ if($next >= $numrows){ $anc .= "<li class='previous-off'>Next</li>"; $anc .= "<li class='previous-off'>Last</li>"; }else{ $anc .= "<li class='next'><a href='javascript:pagination($next);'>Next </a></li>"; $anc .= "<li class='next'><a href='javascript:pagination($last);'>Last</a></li>"; } $anc .= "</ul>"; $this->anchors = $anc; $this->total = "Halaman : <b>$page_showing</b> dari <b>$total_page</b>. Total Records : <b>$numrows</b>"; } } ?>
7. page_data.php
merupakan file yang berisi kode-kode untuk menampilkan data pelanggan beserta pagination (class untuk pagination nantinya digunakan pada bagian ini), termasuk kode jquery untuk menangani request Ajax ketika link update/delete pada baris data di-klik.
<script type="text/javascript"> // fungsi ini untuk menampilkan list data pelanggan sesuai halaman (page) yang dipilih. // list data yang ditampilkan disesuaikan juga dengan input data pada bagian search. function pagination(page){ var cari = $("input#fieldcari").val(); var combo = $("select#pilihcari").val(); if (combo == "namapelangan"){ dataString = 'starting='+page+'&nama='+cari+'&random='+Math.random(); } else if (combo == "idpelanggan"){ dataString = 'starting='+page+'&id='+cari+'&random='+Math.random(); } else{ dataString = 'starting='+page+'&random='+Math.random(); } $.ajax({ url:"page_data.php", data: dataString, type:"GET", success:function(data) { $('#divPageData').html(data); } }); } // fungsi untuk me-load tampilan list data pelanggan, data yang ditampilkan disesuaikan // juga dengan input data pada bagian search function loadData(){ var dataString; var cari = $("input#fieldcari").val(); var combo = $("select#pilihcari").val(); if (combo == "namapelanggan"){ dataString = 'nama='+ cari; } else if (combo == "idpelanggan"){ dataString = 'id='+ cari; } $.ajax({ url: "page_data.php", //file tempat pemrosesan permintaan (request) type: "GET", data: dataString, success:function(data) { $('#divPageData').html(data); } }); } $(function(){ // membuat warna tampilan baris data pada tabel menjadi selang-seling $('#tblpelanggan tr:even:not(#nav):not(#total)').addClass('even'); $('#tblpelanggan tr:odd:not(#nav):not(#total)').addClass('odd'); $("a.edit").click(function(){ page=$(this).attr("href"); $("#divFormContent").load(page); // me-load formpelanggan untuk melakukan edit data $("#divFormContent").show(); $("#btnhide").show(); return false; }); $("a.delete").click(function(){ if(confirm("Apakah benar akan menghapus data pelanggan ini?")) { $.ajax({ url:$(this).attr("href"), type:"GET", dataType: 'json', //respon yang diminta dalam format JSON success:function(response) { if(response.status == 1){ loadData(); $("#divFormContent").load("formpelanggan.php"); $("#divFormContent").hide(); $("#btnhide").hide(); alert("Data berhasil di hapus!"); } else{ alert("Data gagal di hapus!"); } } }); } return false; }); }); </script> <?php // memanfaatkan class pagination dari Reneesh T.K include_once('config.php'); include_once('pagination_class.php'); if (isset($_GET['nama']) and !empty($_GET['nama'])){ $nama = $_GET['nama']; $sql = "select * from tbl_pelanggan where nama_pelanggan like '%$nama%' order by id_pelanggan"; } else if (isset($_GET['id']) and !empty($_GET['id'])){ $id = $_GET['id']; $sql = "select * from tbl_pelanggan where id_pelanggan = '$id' order by id_pelanggan"; } else{ $sql = "select * from tbl_pelanggan order by id_pelanggan"; } if(isset($_GET['starting'])){ //starting page $starting=$_GET['starting']; }else{ $starting=0; } $recpage = 5;//jumlah data yang ditampilkan per page(halaman) $obj = new pagination_class($sql,$starting,$recpage); $result = $obj->result; ?> <table id="tblpelanggan"> <tr><th>Id Pelanggan</th><th>Nama Pelanggan</th><th>Alamat</th><th>No. Handphone</th><th>Aksi</th></tr> <?php //menampilkan data pelanggan if(mysql_num_rows($result)!=0){ while($row = mysql_fetch_array($result)){ ?> <tr><td><?php echo $row['id_pelanggan']; ?></td><td><?php echo $row['nama_pelanggan']; ?></td><td><?php echo $row['alamat']; ?></td><td><?php echo $row['no_hp']; ?></td> <td><a href="formpelanggan.php?action=update&id=<?php echo $row['id_pelanggan'];?>" class="edit">edit</a> | <a href="proses_data.php?action=delete&id=<?php echo $row['id_pelanggan'];?>" class="delete">delete</a></td></tr> <?php } //end while ?> <tr id="nav"><td colspan="5"><?php echo $obj->anchors; ?></td></tr> <tr id="total"><td colspan="5"><?php echo $obj->total; ?></td></tr> <?php }else{?> <tr><td align="center" colspan="5">Data tidak ditemukan!</td></tr> <?php }?> </table>
8. proses_data.php
merupakan file yang berisi kode-kode untuk memproses request Ajax, baik itu penambahan, perubahan, dan delete data pelanggan. proses yang dilakukan disini akan mengembalikan nilai-nilai dalam format JSON untuk kemudian diproses pada bagian yang sebelumnya melakukan request.
<?php // file proses_data.php merupakan halaman untuk menangani request Ajax baik untuk proses tambah, ubah, maupun hapus // respon balikan dari masing-masing proses tersebut adalah dalam format JSON. include_once("config.php"); //fungsi untuk men-generate ID pelanggan, ex: P0001 function buatID($tabel, $inisial){ $struktur = mysql_query("select * from $tabel") or die("query tidak dapat dijalankan!"); $field = mysql_field_name($struktur,0); $panjang = mysql_field_len($struktur,0); $row = mysql_num_rows($struktur); $panjanginisial = strlen($inisial); $awal = $panjanginisial + 1; $bnyk = $panjang-$panjanginisial; if ($row >= 1){ $query = mysql_query("select max(substring($field,$awal,$bnyk)) as max from $tabel") or die("query tidak dapat dijalankan!"); $hasil = mysql_fetch_assoc($query); $angka = intval($hasil['max']); } else{ $angka = 0; } $angka++; $tmp= ""; for ($i=0; $i < ($panjang-$panjanginisial-strlen($angka)) ; $i++){ $tmp = $tmp."0"; } //return hasil generate ID return strval($inisial.$tmp.$angka); } if(isset($_POST['action']) && $_POST['action']=="add") //menangani aksi penambahan data pelanggan { $nama=$_POST['namapelanggan']; $alamat=$_POST['alamat']; $nohp=$_POST['nohp']; $idpelanggan = buatID("tbl_pelanggan","P"); mysql_query("INSERT INTO tbl_pelanggan(id_pelanggan,nama_pelanggan,alamat,no_hp) VALUES('$idpelanggan','$nama','$alamat','$nohp')") or die ("data gagal ditambahakan!"); // mengembalikan respon dalam format JSON. // status "1" berarti proses berhasil dilakukan. echo '{"status":"1"}'; exit; } elseif(isset($_POST['action']) && $_POST['action']=="update") //menangani aksi perubahan data pelanggan { $idplgn=$_POST['idpelanggan']; $nama=$_POST['namapelanggan']; $alamat=$_POST['alamat']; $nohp=$_POST['nohp']; $test = mysql_query("UPDATE tbl_pelanggan SET nama_pelanggan='$nama',alamat='$alamat',no_hp='$nohp' WHERE id_pelanggan='$idplgn'") or die ("data gagal di-update!"); echo '{"status":"1"}'; exit; } elseif(isset($_GET['action']) && $_GET['action']=="delete") //menangani aksi penghapusan data pelanggan { $id = $_GET['id']; $test = mysql_query("delete from tbl_pelanggan where id_pelanggan='$id'"); if(mysql_affected_rows() == 1){ //jika jumlah baris data yang dikenai operasi delete == 1 echo '{"status":"1"}'; }else{ echo '{"status":"0"}'; } exit; } ?>
Setelah keseluruhan file-file pendukung dibuat, maka saatnya untuk melihat bagaimana hasilnya. Demo untuk aplikasi tersebut dapat dilihat pada link ini dan untuk mendownload seluruh source code yang diperlukan dapat melalui link ini.
Demikian yang dapat disampaikan dalam tulisan ini, mohon maaf jika masih banyak kekurangan dan codingnya masih cupu.. hehe.. semoga bermanfaat.
Selanjutnya adalah membuat file-file pendukung utama, seperti berikut ini.
1. config.php
digunakan untuk melakukan pengaturan koneksi ke database.
2. style-page.css
merupakan file css untuk mengatur tampilan web.
2. index.php
merupakan halaman utama, dimana menampung tampilan data pelanggan, form pencarian data pelanggan, dan form pelanggan.
3. pelanggan.js
berisi kode-kode jquery untuk menangani request Ajax.
4. formpelanggan.php
merupakan file yang berisi kode-kode untuk form pelanggan, dimana form pelanggan nantinya akan ditampilkan untuk menangani fungsi penambahan/perubahan data pelanggan. form ini ditampilkan dengan mekanisme Ajax pada halaman index.
5. pagination_class.php
merupakan class untuk menangani pagination, yang dibuat oleh Reneesh T K.
6. page_data.php
merupakan file yang berisi kode-kode untuk menampilkan data pelanggan beserta pagination (class untuk pagination nantinya digunakan pada bagian ini), termasuk kode jquery untuk menangani request Ajax ketika link update/delete pada baris data di-klik.
7. proses_data.php
merupakan file yang berisi kode-kode untuk memproses request Ajax, baik itu penambahan, perubahan, dan delete data pelanggan. proses yang dilakukan disini akan mengembalikan nilai-nilai dalam format JSON untuk kemudian diproses pada bagian yang sebelumnya melakukan request.
Setelah keseluruhan file-file pendukung dibuat, maka saatnya untuk mencoba aplikasinya. Untuk melihat hasilnya, demo dapat dilihat pada link ini dan untuk mendownload seluruh source code yang diperlukan dapat melalui link ini.
Demikian yang dapat disampaikan dalam tulisan ini, mohon maaf jika masih banyak kekurangan dan codingnya masih cupu.. hehe.. semoga bermanfaat.
Bagus banget ini… thx2 ^_^
hikarianna
21 August 2010 at 21:51
terima kasih sudah berkunjung.. semoga bisa bermanfaat.. ^^
dearsa
31 August 2010 at 18:51
thnx.good.sy sdh donlut.pada saat di gabung dengan website utama kok ga bisa jalan y?apa tabrakan dengan script website utama ya?
ismail
22 September 2010 at 08:52
maaf, klo boleh tau mas apanya ya yg ga mau jalan? ajax-nya ato lainnya? klo ajax-nya mungkin bisa dipastikan terlebih dahulu bahwa library jquery sudah dipanggil pada halaman website, seperti berikut ini.
dimana folder penempatan file jquery-nya juga disesuaikan dgn yg mas gunakan. Apabila menggunakan library lainnya jg bersama jquery (spt: prototype ato lainnya), mungkin solusi ini bisa digunakan. Selain itu, pastikan jg query database telah disesuaikan dgn database yg digunakan. Oya, satu lagi mas mungkin mas bisa menginstall add-on Firebug jika menggunakan Firefox shg bisa menganalisa request ajax yg terjadi.
dearsa
22 September 2010 at 09:49
Trims solusinya.maksudnya begini.
misal sy punya website utama dengan nama index.php
di index.php sy include datapelanggan.php
nah pada saat sy buka http://www.xx.index.php itu tidak bisa menampilkan seluruh datapelanggan.php.
jika sy buka secara terpisah http://www.xx/datapelanggan.php itu bisa menampilkan seluruh datapelanggan, dengan kata lain tidak ada trouble.
mungkinkah bentrok dengan script index.php nya?mohon pencerahannya mas
ismail
22 September 2010 at 12:21
oya mas, mungkin klo sy menangkapnya bgini: jadi tutorial ‘ajax-aeds’ tsb ingin di-include-kan pada hal utama yg baru ya? dimana file index.php yg ada di tutorial ‘ajax-aeds’ diubah menjadi datapelanggan.php kemudian di-include-kan pada hal utama yg baru (index.php). bgitu ya mas? klo memang spt itu, tidak bisa di-include-kan secara langsung karena akan ada masalah untuk path dari file2 yg diperlukan. jadi ada beberapa perubahan untuk menyesuaikannya. perubahan tsb bisa dilihat pada contoh yg sy coba buat di sini. mungkin bisa dicoba dan dipelajari terlebih dahulu, juga bisa dilihat perubahan yg ada. semoga sesuai dgn yg dimaksud dan semoga membantu. 😀
dearsa
22 September 2010 at 19:28
ok trims.sudah sy coba bisa mas.sekarnag masalahnya.misalkan di http://index.php itu kan ada menu2 nya: misal home, data pelanggan.
yang sy tanyakan gimana jika di klik data pelanggan itu bisa manmilkan tutorial data pelanggan. trim sebelumnya atas pencerahannya
ismail
25 September 2010 at 09:41
jika pada hal utama terdapat menu spt home dan data pelanggan maka ada beberapa hal yg perlu diubah dan ditambahkan. ada 3 file yg perlu ditambahkan seperti berikut.
– index.php
– main.php
– content.php
dimana file main.php merupakan file yg diubah dari file index.php yg ada sebelumnya. selamat mencoba mas.. 😀
dearsa
26 September 2010 at 09:34
Ueko. Trims Solusinya Lanjut gan
ismail
27 September 2010 at 09:50
Parse error: parse error in C:\wamp\www\pdate\page_data.php on line 144
dodoy
10 October 2010 at 21:04
klo di tmpt saya bisa berjalan dengan baik, saya menggunakan xampp 1.7.1
dearsa
14 October 2010 at 07:46
dear mas dearsa saya ada notifikasi eror seperti ini :
Parse error: syntax error, unexpected $end in C:\xampp\htdocs\pagingtes\page_data.php on line 140
saya pake xampp 1.7.3
mohon pencerahannya mas 🙂
Thanx
imam
24 November 2010 at 10:36
oya mas Imam, saya baru sempat mencoba pada xampp 1.7.3 terdapat error seperti itu. hal ini karena pada xampp yg lebih baru sepertinya setting ‘short open tag’ di-nonaktifkan.
solusinya adalah pertama mengganti seluruh ‘short open tag’ yg ada dgn tag standar :
karena ada beberapa file yg masih menggunakannya. kedua meng-aktifkan setting ‘short open tag’ di xampp\php\php.ini, tapi untuk solusi kedua setelah baca2 tidak direkomendasikan. untuk itu, file2 source code sudah saya sesuaikan dan dpt di-download pd link yg sama. semoga membantu.. 😀
dearsa
24 November 2010 at 22:20
oya mungkin error yg terjadi ini hampir sama bila dijalankan pada wamp seperti error yg disampaikan oleh mas dodoy sblmnya. semoga solusi diatas bisa digunakan.. 😀
dearsa
24 November 2010 at 22:43
bagaimana menambahkan scroltable ke samping. terima kasih
martunis alfatih
12 October 2010 at 16:41
mungkin untuk scrolltable ke samping bisa ditambahkan code css berikut. (file page_data.php)
dimana dalam contoh tersebut jika ukuran lebar tabel melebihi 350px maka scroll bar ke samping akan ditampilkan.
dearsa
14 October 2010 at 08:03
Thanks so much for the tutorial 🙂
Eiger Yap
7 November 2010 at 21:07
mas mau tanya mas.
jika menu itu tampil pada saat login gmn mas cara menempelkan session nya mas.
trimakasih sebelumnya
ismail
9 November 2010 at 13:00
apabila disertai login maka session yg telah didaftarkan (ketika login berhasil) harus dicek pada halaman yg dituju setelah login tsb. mungkin dapat dilihat pengecekan session pada file berikut ini.
– misal halaman yg dituju setelah login adalah index.php
– dalam file index.php terdapat include ‘content.php’ maka dalam file content.php perlu dicek pula halaman mana yg dapat diakses oleh user tsb.
mungkin lebih lengkap bisa mencoba contoh yg saya coba buat di sini. semoga membantu.. 😀
dearsa
10 November 2010 at 10:42
uke mas trims.lain waktu sambung lagi mas
ismail
11 November 2010 at 10:04
Mas, sorry nih mo minta petunjuk nya.
aku include kan script dari mas.
tapi pas di akses hanya muncul button tambah saja. data tidak tampil dan ketika saya klik button tambah itu, muncul error “Internal Server Error”
mohon petunjuk nya..maklum baru belajar nih..thanks before..
Oerangkampoeng
24 November 2010 at 16:24
oya mas, kyaknya tidak bisa di-include-kan secara langsung karena akan ada masalah untuk path dari file2 yg diperlukan. mungkin mas bisa membaca komentar2 sebelumnya, sepertinya ada permasalahan yg hampir sama.
dearsa
24 November 2010 at 22:56
maaf mas lum punya website…
mw tax cara bwt wedsite biar bsa diupload di intrnet,gmna mas?
mkas dblumx
suciati
2 December 2010 at 17:51
klo untuk membuat website agar bisa di-upload di internet, maka dibutuhkan web host (tempat dimana web akan di-host) dan nama domain (alamatnya). setelah itu web yg telah dibuat dpt di-upload lewat ftp atau fasilitas file manager yg tersedia pd cpanel. lewat pencarian di google bnyk sekali penyedia jasa web hosting yg bisa digunakan. sebagai alternatif, apabila ingin mencoba dpt memanfaatkan layanan web hosting gratis seperti 000webhost. selain itu apabila ingin memperoleh domain gratis dpt mencoba co.cc. semoga membantu.. 😀
dearsa
3 December 2010 at 22:07
bagus nich…ijin make….
adekjeyek
14 December 2010 at 06:52
iya silahkan, semoga bisa bermanfaat.. 😀
dearsa
14 December 2010 at 17:23
terimakasih banyak gan.
kebetulan ane lagi nyari2 ginian.
tq
bie
24 December 2010 at 21:40
mas cara konekin databasenya bagai mana ya? q jalanin tp ada warning begini… tolong bantuaannya mas…
Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘username’@’localhost’ (using password: YES) in C:\xampp\htdocs\budi\ajax-aeds\config.php on line 7
Koneksi ke database gagal!
de
27 December 2010 at 18:19
apabila error-nya seperti itu berarti ‘konfigurasi’ untuk koneksi ke database masih ada yg salah. sebelumnya pastikan ‘database’ telah dibuat beserta ‘tabel’ yg diperlukan (untuk ‘tabel’ bisa menggunakan file ‘saeds-sql.sql’) setelah itu mas bisa buka file ‘config.php’ yg ada lalu ubahlah konfigurasi database sesuai dgn yg digunakan, seperti alamat server database (klo di komputer local menggunakan localhost atau 127.0.0.1), username untuk koneksi ke database (tergantung yg digunakan, bisa saja ‘root’ atau username lainnya, silahkan disesuaikan), password dari username tsb dan nama database yg digunakan. semoga membantu. 😀
dearsa
27 December 2010 at 20:42
mas jika menunya dropdwon gmn mas?
ismail
4 January 2011 at 12:05
apabila menunya dropdown, hal tsb dapat dibuat dengan memanfaatkan CSS ataupun javascript (termasuk jQuery). mas bisa search di google tentang hal tsb, salah satu yg saya temukan: 38 jQuery And CSS Drop Down Multi Level Menu Solutions, selain itu ada juga tulisan dari mas Gatot Ari Wibowo tentang Menu Horizontal Multi Level Menggunakan jQuery & PHP mungkin bisa dicoba mas. Klo saya sempat mencoba superfish dan untuk contoh yg wkt ini, saya coba membuat menu dropdown menggunakan superfish tsb. perubahan menu bisa dilihat pd contohnya di sini. selebihnya mungkin mas bisa mencoba-coba lagi sendiri. semoga membantu.. 😀
dearsa
5 January 2011 at 15:57
wah bagus banget gan..
saya ko tidak bisa meng`update dan menambah data ya mas.
mohon pencerahannya mas..
wawan
26 January 2011 at 08:29
oya mas, saya masih blm jelas ttg tidak bisanya meng-update dan menambah data. apakah contoh code yg telah di-download tidak bisa berjalan dgn baik? apakah ada error yg ditampilkan? mungkin yg pertama diperhatikan saat mencoba contoh code-nya adalah mempersiapkan database-nya dan konfigurasi koneksi ke database pd file config.php.
dearsa
27 January 2011 at 21:40
mas mau tanya mas?
di tutorial actionnya hanya dua yaitu add dan update.
jika ingin menambahkan satu action lagi gmn mas?
misalkan action validasi.
alurnya demikian:
1. pada saat data pelanggan di edit
2. kemudian di klik validasi maka data yang di edit tersebut tersimpan di tabel yang lain ex. validasi_pelanggan
ismail
4 February 2011 at 09:53
oya mas, apabila ingin menambah sebuah aksi seperti ‘validasi’ tsb, dapat dilakukan dgn 2 cara. pertama dapat menambahkan sebuah aksi ‘validasi’ pada tiap baris data pelanggan yg ditampilkan pada tabel dimana sebelumnya telah ada aksi ‘edit’ dan ‘delete’. modifikasi utk hal ini dapat dilakukan pada file ‘page_data.php’. kedua menambahkan sebuah button ‘validasi’ pada formpelanggan yg ditampilkan ketika sebuah data pelanggan di-edit. modifikasi utk hal ini dapat dilakukan pada file ‘formpelanggan.php’. tentunya kedua cara tersebut akan melakukan ‘aksi’ yg berhubungan dgn database, dimana hal tsb diproses pada file ‘proses_data.php’. untuk hal itu, maka tambahkan juga code untuk memproses aksi dari kedua cara tsb. oya, jangan lupa jg bahwa tabel ‘validasi_pelanggan’ telah dibuat sblmnya. mungkin untuk lebih jelas dapat melihat contoh codenya di sini. semoga membantu.. 😀
dearsa
5 February 2011 at 07:34
Thnx mas. jika kita joinkan dengan tabel lain gmn mas. misalkan ada sebuah tabel jual.pada saat menambahkan data jual nama dengan dropdown sedangkan alamat dan no_hp muncul pada saat nama di pilih. mohon pencerahan. terimakasih.
ismail
11 February 2011 at 15:53
apabila mas ingin menampilkan data alamat dan no hp ketika data nama dipilih pada drop-down list, mungkin prinsipnya hampir sama seperti pada bagian ‘search’. bisa diperhatikan lagi kode pada bagian search data pelanggan yg ada pilihan drop-down list-nya (file index.php dan pelanggan.js). bayangannya seperti ini.
awalnya, mas membuat query untuk mendapatkan ‘nama pelanggan’ yg ada untuk ditampilkan pada drop-down list. misalkan id dari drop-down list-nya: ‘pilihnama’.
kemudian tambahkan kode javascript(jquery) untuk menangani aksi pilih nama yg terjadi. hal ini dilakukan dengan memanfaatkan event change.
nantinya request ajax diproses pada file getdata.php dan mengembalikan data alamat & nohp dalam format json untuk kemudian ditampilkan.
dearsa
12 February 2011 at 12:29
wah ini yang saya cari-cari mas. dah kesana kemari mencari contoh penerapan add,edit,delete dan search eh malah ada paging sekalian wah thx bgt mas. boleh saya add ym ato fb nya untuk minta pencerahan lainnya?
anton hilman
20 February 2011 at 21:31
Saya sangat berterima kasih tutorialnya .. sumpah dah keren saya sgt bingung udh 2minggu nyari tutorial begian .
Terima kasih
James
James
27 February 2011 at 00:55
mas tanya mas.kode pelanggan sy emtrykan secara manual di mysql nya dimana kode pelanggan ada spasinya (Ex: P 007).kenapa pada saat di klik edit kok tidak bisa menampilkan form edit nya mas? apakah field yang di jadikan kunci datanya tidak boleh ada spasi?
ismail
7 March 2011 at 14:06
field yg dijadikan kunci dpt berisi ‘spasi’, tetapi dalam hal ini ketika link edit di-klik maka data yg dikirimkan (string URL) yakni pada variabel id hanya berisi ‘P’ saja sedangkan bagian selanjutnya tidak disertakan. spasi merupakan karakter yg perlu dikodekan dlm URL agar dpt diproses dgn benar, untuk itu dpt digunakan fungsi urlencode(). agar data pelanggan dgn id ex: ‘P 007’ dapat ditampilkan pd form edit, maka pada file page_data.php (bagian tblpelanggan – kolom ‘aksi’ link edit/delete) perlu ditambahkan pemanggilan fungsi urlencode().
dearsa
7 March 2011 at 15:26
Thnx mas. klo boleh bisa komunikasi lewat YM g?
ismail
8 March 2011 at 08:52
mas mau tanya lagi.
1. jika data pelanggan di tambahi satu field lagi misalkan picture gmn?dimana picturenya itu pada saat input ada browse nya.
2. kemudian ada sat menu lagi yaitu cetak data gmn? dalam bentuk pdf?
ismail
17 March 2011 at 13:56
pertama:
sbg bayangan apabila ingin menambahkan field utk meng-upload image maka perlu dilakukan perubahan pd file ‘formpelanggan.php’ baik utk tambah atau edit data pelanggan dan jg file ‘proses_data.php’ utk pemrosesan data-nya (termasuk proses upload). selain itu perlu disediakan folder utk menyimpan upload file image tsb dan pada ‘tbl_pelanggan’ di database juga perlu ditambahkan field untuk menyimpan nama file image yg di-upload tsb. nantinya image yg telah di-upload dpt ditampilkan (ketika edit data) dgn kode misal:
dimana $img menampung nama file image yg diperoleh dr hasil query dan ‘imgupload’ merupakan folder tmpt penyimpanannya.
pada file ‘proses_data.php’ ketika dilakukan delete data pelanggan, perlu diperhatikan keberadaan file image yg di-upload berdasarkan ‘id_pelanggan’ tsb, dimana dpt memanfaatkan fungsi php ‘file_exists()’ dan jg ‘unlink()’ utk men-delete file image tsb. jadi ketika delete data pelanggan maka file image jg dihapus.
mungkin sbg referensi, mas bisa membaca ttg PHP File Upload di sini atau bisa search lebih lanjut lewat google. oya mas, saya jg sempat membaca diskusi: link1 dan link2 ttg upload file dgn jquery, disana disebutkan dpt memanfaatkan jQuery Form Plugin.
kedua:
untuk membuat laporan dalam format PDF, mungkin mas dapat memanfaatkan FPDF library.
dearsa
18 March 2011 at 15:03
Jika file pelanggan di tambah 1 field yaitu jenis kelamin pake combo gmn mas?mohon pencerahannya.terimakasih
rara
29 March 2011 at 14:29
mas tanya mas jika nama ada petik satu atas kok selalu gagal itu kenapa mas? contoh isma’il
ismail
4 April 2011 at 13:19
maaf sblmnya mas, saya jarang OL belakangan ini. saya coba untuk menjawab pertanyaan yg ada:
@rara, apabila terdapat penambahan data untuk jenis kelamin maka dapat dilakukan dengan melakukan perubahan code pada file ‘formpelanggan.php’ dimana di dalamnya bisa ditambahkan combo box. tentunya pada database juga perlu penambahan field untuk menyimpan data jenis kelamin tsb. selain itu pada file ‘proses_data.php’ juga perlu dilakukan penyesuaian code untuk insert dan update data ke database.
kemudian mengenai input data yg terdapat tanda petik selalu mengalami kegagalan/error, hal ini disebabkan karena tanda petik merupakan karakter khusus, dimana saat melakukan penyimpanan data ke database maka karakter-karakter khusus ini yg mesti di-antisipasi. fungsi berikut bisa digunakan untuk menangani hal tersebut.
Nantinya, fungsi tersebut dimanfaatkan untuk mem-filter input data sebelum input data tsb disimpan ke database (file proses_data.php).
untuk lebih jelasnya, saya coba membuat contoh code-nya termasuk di dalamnya mengenai upload image. contoh code tsb bisa di-download di sini. semoga membantu.. 😀
dearsa
8 April 2011 at 15:24
di database sudah sy tambah 1 field. di formpelanggan juga sudah sy tambah dengan combo box. tp pada saat data di edit combo boxnya tidak bisa berubah sesuai dengan data yang ada di database. sebagai contoh di database perempuan yang keluar di formpelanggan kok laki2. sekali lagi mohon pencerahannya. terimakasih
rara
13 April 2011 at 08:11
oya mas, sebelumnya saya sempat membuat contoh untuk penambahan combobox tsb pada link ini. pada contoh tsb saya juga telah menyertakan file sql untuk databasenya, mungkin perlu diperhatikan lagi field pada database untuk penyimpanan data jenis kelamin. untuk field data jenis kelamin saya membuatnya bertipe enum: `jns_kelamin` enum(‘L’,’P’), jadi data yg nantinya disimpan pada database adalah ‘L’ untuk laki-laki dan ‘P’ untuk perempuan shg pada file formpelanggan.php, untuk input data perlu jg disesuaikan seperti berikut ini.
ketika submit data dilakukan maka ‘jnskelamin’ dapat berisi value ‘piljnskelamin’ atau ‘L’ atau ‘P’, dimana sebelum di-proses apabila pengguna belum meng-input pilihan data jenis kelamin (dalam hal ini value berisi ‘piljnskelamin’) maka akan ditampilkan peringatan untuk melengkapi data jenis kelamin. semoga membantu.. 😀
dearsa
14 April 2011 at 09:38
Terimakasih banyak sharing nya mas. Tutorialnya dilanjut mas. tambah lagi.
ismaiil
16 April 2011 at 09:19
iya sama2 mas.. semoga bermanfaat.. 😀
dearsa
20 April 2011 at 16:49
klo menggunakan database oracle gimn caranya, apa saja yang perlu dirubah??
dwi
17 April 2011 at 11:46
maaf sebelumnya, saya kurang berpengalaman dgn database oracle, mungkin menurut saya untuk menyesuaikannya ada beberapa hal yg perlu dilakukan. pertama bagaimana melakukan koneksi ke database oracle, karena cara koneksi ke db mysql dgn oracle berbeda, mungkin link2 berikut dpt membantu: link 1, link 2, dan link 3. kedua adalah membuat tabel database yg diperlukan termasuk menyesuaikan syntax query sql yg digunakan dlm kode namun saya kira untuk syntax sql tidak terlalu jauh berbeda. selain itu, perlu juga menyesuaikan fungsi2 php yg sebelumnya berdasarkan db mysql ke oracle (PHP : OCI8 – Manual). semoga membantu. 😀
dearsa
20 April 2011 at 18:19
Makasih mas…..mudah2an tambah ilmunya
dzik
27 April 2011 at 19:58
iya mas, sama2.. semoga bermanfaat.. 😀
dearsa
28 April 2011 at 10:17
tang u bozzzzzzzzzz
shabran
13 May 2011 at 06:32
makasih byk mas.. tq bgt y..
hilman
17 May 2011 at 02:58
mas.. bagus banget tutorial nya ^_^
oya mas punya tutorial php dan sql server tidak?
thx
myrna
26 May 2011 at 14:47
maaf untuk tutorial php dan sql server saya tidak ada, tetapi menurut saya prinsip awalnya adalah bagaimana mengkoneksikan php dengan sql server (bisa di-search terlebih dahulu tentang topik tersebut). oya, mungkin referensi ini bisa membantu: php manual atau Microsoft Drivers for PHP for SQL Server. 😀
dearsa
27 May 2011 at 13:37
terima kasih sebelumnya atas bantuannya ^_^
sudah bisa mengkoneksikan antarah php dan sql server 🙂
sebenarnya sepengetahuan Mas. perbedaan dari segi syntax maupun dari segi yg lainnya antara sql server dan my sql apa yah Mas? soalnya saya baru menggunakan sql server (krn tutuntan pekerjaan.. hehehe)
myrna
27 May 2011 at 14:03
oya, mungkin klo untuk perbedaan diantara keduanya lebih lengkap bisa dibaca pada referensi berikut ini: Comparison of different SQL implementations, MySQL vs MS SQL Server, SQL Differences Between Microsoft SQL Server and MySQL. semoga membantu. 😀
dearsa
28 May 2011 at 17:32
oya Mas jika saya mau memodifikasi artikel mas di atas.
tahapan2 file yg musti saya pelajari di mulai dari mana mas jika ingin mengedit? thx
myrna
27 May 2011 at 14:06
apabila ingin memodifikasinya agar dapat berjalan pada mssql, dapat dimulai dari: file config.php yang berisi pengaturan koneksi ke database, file formpelanggan.php yang berisi query ke tabel pelanggan , file page_data.php & pagination_class.php yang berisi query untuk menampilkan data pelanggan dlm bentuk tabel beserta pagination, dan file proses_data.php yang berisi query untuk memproses insert, update dan delete data pelanggan.
oya, saya sempat jg mencoba untuk melakukan modifikasi tsb. dalam hal ini saya menggunakan extension yg disediakan php agar dapat berhubungan dengan database mssql, yakni: extension=php_mssql.dll. saya mengaktifkannya melalui file php.ini. saya menggunakan MSSQL Express 2005, paket XAMPP 1.7.1 di windows xp sp2. hasil modifikasinya dapat diambil pd link ini. semoga membantu. 😀
dearsa
28 May 2011 at 18:09
Keren Mas ini hampir sama kayak grid 😀
Deny
27 May 2011 at 08:37
Mas sebelumnya terima kasih banyak atas bantuannya untuk solusi yang telah diberikan. Sangat membantu sekali Mas ^_^ Semoga kebaikan Mas di balas oleh Yang Mahakuasa. Amin 🙂
Tetapi setelah saya edit menggunakan Database dari sql server yg saya punya. ada beberapa keanehan Mas. jika dipilih link edit, muncul data di kolom “Update Data Pelanggan” tidak sesuai dengan data yg dipilih pada link edit, kemudian paging nya hanya berubah data saat first dan last saja. Apakah saya boleh meminta data yg tanpa css dan jquery mas? mgkn saya salah memasukkan syntax. krn saya masih krg paham dalam css dan jquery. maaf merepotkan Mas. thx
myrna
30 May 2011 at 14:50
kira2 apa yang salah yah Mas? saya sudah coba beberapa kali tetapi tetap saja, permasalahan di atas muncul.
apa krn database saya tidak memiliki id yg sebagai primary key? berpengaruh tidak Mas? jadi id_pelanggan nya saya ganti menjadi branch, dimana branch itu bukan primary key dan datanya berupa tgp1,slo1,bdg1, dan lain2
myrna
31 May 2011 at 09:53
mungkin untuk permasalahan itu, perlu diperhatikan lagi file page_data.php. ketika melakukan edit data maka yg menjadi acuan adalah id_pelanggan. jika dalam hal ini diganti menjadi branch maka perlu disesuaikan lagi atau mungkin terdapat data branch yang duplikat shg data yg ditampilkan menjadi tidak sesuai. oya, modifikasi yg tanpa menggunakan ajax dpt diambil pada link ini. 😀
dearsa
2 June 2011 at 19:19
[…] feed yang ada dalam aplikasi ini dibuat menggunakan model pengelolaan data seperti pada tulisan sebelumnya. Tab-tab RSS feed pada halaman ini akan ditampilkan berdasarkan data status aktif-nya […]
Belajar Membuat Simple RSS Feed Reader dengan SimplePie, PHP dan Jquery « Arsa's blog..
4 June 2011 at 08:05
Terima kasih Mas sekali lagi buat bantuannya. sudah bisa mas yg tanpa ajax. ^_^
tetapi masih ada yg kurang sempurna Mas. saat melakukan pencarian misalkan berdasarkan id_pelanggan, paging untuk halaman 2,3 dan seterusnya malah menampilkan hasil secara keseluruhan atau sama dengan jika menampilkan “semua”.
knp yah Mas? oy mas, jika saya ingin mengexport hasil pencarian ke excel bagaimana yah, bkn dari data di database, tetapi data dari tabel hasil pencarian. terima kasih
myrna
8 June 2011 at 09:58
iya, utk pagination-nya masih ada yg salah. maaf saya baru menyadarinya, hal ini karena ketika dilakukan pencarian misal: berdasarkan nama pelanggan yang mengandung huruf ‘n’, awalnya hasil query telah sesuai tetapi tombol pd pagination belum disesuaikan dengan pencarian tersebut. ada perubahan yg saya lakukan pd file page_data.php dan pagination_class.php. perubahan tersebut bisa diambil dari link yg sama.
untuk meng-export hasil pencarian ke excel, mungkin bisa di-search terlebih dahulu fungsi/contoh kode utk melakukannya. apabila ingin meng-export data sesuai kriteria pencarian saja, manfaatkan ‘query sql’ yg digunakan utk pencarian tsb (bisa dilihat pd file page_data.php).
dearsa
11 June 2011 at 08:54
makasih Mas buat tutorialnya yang bagus banget ^_^
saya sudah bisa menggunakan yg dengan jquery dan ajax 😀
jika ada yg masih kurang sempurna. boleh kan saya Mas lagi? makasih yah Mas..
myrna
9 June 2011 at 16:18
iya sama2, semoga bermanfaat.. 😀
dearsa
11 June 2011 at 09:02
Mas mau tanya, jika saya mau menambahkan jenis kelamin (wanita/laki2) dengan menggunakan radio button/checkbox/dropdown untuk penambahan data pelanggan. apa bisa Mas memberi contohnya masing2 mas? makasih
myrna
17 June 2011 at 16:25
sebenarnya untuk menambahkan data input jenis kelamin menggunakan dropdown, pernah dibahas pada komentar-komentar sebelumnya. untuk radio button penggunaannya hampir sama. perubahan dilakukan pada file “formpelanggan.php”, pastikan telah disediakan field pada database untuk penyimpanan data jenis kelamin, bisa dengan membuatnya bertipe enum(MySQL) : `jns_kelamin` enum(‘L’,’P’). berikut perubahan yg dilakukan.
– menggunakan dropdown
– menggunakan radio button
variabel “$jnskelamin” merupakan variabel penampung data “jenis kelamin” hasil dari query database sebelumnya. selanjutnya, perlu juga dilakukan penyesuaian pada file “proses_data.php” untuk “insert/add” dan “update”. 😀
dearsa
22 June 2011 at 07:42
mas makasih banget tutorialnya
tapi kok pas tak jalanin dah bisa semua tapi waktu tambah pelanggan kok ada error gini
Notice: Undefined index: action in C:\xampp\htdocs\ajax-aeds\formpelanggan.php on line 101
n471bgaara
21 June 2011 at 03:31
Hal ini terjadi karena beberapa hal, yaitu:
– setting pada file ‘php.ini’ untuk error_reporting = E_ALL & E_NOTICE sedangkan pada tempat saya, sepertinya ketika menginstall xampp (versi yg saya gunakan xampp 1.7.1) secara default menggunakan error_reporting = E_ALL & ~E_NOTICE. Jadi ‘notice’ ditampilkan karena setting untuk error_reporting-nya tersebut.
– karena hal tersebut saya jadinya tidak memperhatikan jika terjadi kesalahan, yakni ketika melakukan tambah data pelanggan ($action = “add”), ada variabel yg belum di-set dan juga definisikan di awal padahal digunakan dibawahnya. sebenarnya, apabila pada error_reporting notice diabaikan aplikasi tetap bisa berjalan normal. untuk itu source code sudah saya sesuaikan dan dapat diambil pd link yg sama.
terima kasih, semoga membantu.. 😀
dearsa
21 June 2011 at 23:44
Waw..!!! mantap…!!!
Menurut saya sih, ini udah ga simple lagi… kompleks tapi sangat efektif, apalagi untuk web based application…
Nyoba dulu ah…
Thanks tutorialnya…
Endi
23 June 2011 at 13:07
saya udah nyobain nih…
tapi ada beberapa masalah:
1. Saya tidak bisa melakukan penambahan dan perubahan data. Pada saat saya tekan button tambah atau edit, formnya bisa keluar, tapi pada saat saya menekan button tambah/update pada form tersebut, yang keluar malah alert yang isinya:
Error tidak diketahui:
(semua isi file dari page_data.php)
bahkan datanya pun tidak masuk ke database.
2. Pada saat saya tekan link delete, terdapat error:
undefined index: action
undefined index: idpelanggan (dalam kasus ini)
tetapi data tersebut berhasil dihapus…
Mohon pencerahannya, terimakasih
Endi
24 June 2011 at 02:42
oya mas, permasalahan ini sepertinya mirip dengan permasalahan pd komentar sebelumnya. hal ini terjadi karena setting pd file ‘php.ini’ yg saya gunakan tidak menampilkan ‘notice’ atau pd php.ini: error_reporting = E_ALL & ~E_NOTICE. apabila ‘notice’ diaktifkan dan aplikasi ini dijalankan maka ‘notice’ akan muncul karena ada beberapa variabel yg saya gunakan belum saya set sebelumnya. sebenarnya apabila setting pd php.ini utk ‘notice’ tidak ditampilkan, aplikasi dapat berjalan dgn normal. untuk itu source code sudah saya sesuaikan dan dapat diambil pada link yang sama.
dearsa
24 June 2011 at 14:16
Udah saya coba mas… berhasil…
Makasih ya…
Maaf kalo pertanyaannya diulang… kurang ngeh soalnya… 😀
baru ngerti begitu liat kodenya…
Endi
25 June 2011 at 01:19
iya mas sama2, gpp mas.. semoga bermanfaat.. 😀
dearsa
26 June 2011 at 09:20
terima kasih tutorialnya mas. sngat membantu bagi yang mau belajar ajax dari membangun aplikasi sederhana.salam
anton hilman
1 July 2011 at 10:18
iya mas, sama2. terima kasih. semoga bisa bermanfaat. 😀
dearsa
8 July 2011 at 09:03
mas, saya uda coba code yang diatas tapi swaktu mau nambah pelanggannya ada errornya.., apa karena saya make xampp versi 1.7.4 ato nggak y..??
errornya ini mas…–> PARSING JSON Request failed
tolong bgt ya mas.., thank u..:3
weli
2 July 2011 at 01:28
oh, maaf.., yg punya mas uda bisa.., tpi saya mau ubah databasenya ttp ada error yang sama kya diatas.,
jadi klo mau ubah databasenya apa2 aj yg hrus diubah ya mas..??
help me mas.., thank u..:)
weli
2 July 2011 at 08:48
apabila akan melakukan perubahan database, seperti penambahan field pd tabel ataupun lainnya perlu diperhatikan beberapa file berikut.
– pelanggan.js : merupakan file berisi code javascript-jquery untuk me-load data awal dari database dan search data dgn mekanisme ajax yg berhubungan dgn file page_data.php
– page_data.php : merupakan file tempat pemrosesan request ajax untuk search dan penampilan data awal. bagian ini berisi query sql yg bisa disesuaikan
– formpelanggan.php : merupakan file untuk menampilkan form yg kaitannya dgn input dan update data. bagian ini terdapat query sql yg bisa disesuaikan
– proses_data.php : merupakan file tempat pemrosesan request ajax untuk insert, update dan delete data. terdapat pula query sql yg bisa disesuaikan
dearsa
8 July 2011 at 09:28
Mas.. Jika ingin mengubah ID nya dari P0001 menjadi 0001. Apa sajakah yg musti di ubah pada sintax nya? saya sudah mencoba beberapa kali, tetapi tidak bs.
Mohon pencerahannya Mas. Thx..
myrna
4 July 2011 at 10:29
maaf sebelumnya, akhir-akhir ini saya jarang OL. untuk melakukan perubahan ID dari P0001 menjadi 0001 dapat dilakukan perubahan pada function buatID. berikut ini perubahan yg saya lakukan. perubahan ini menghasilkan ID menjadi ‘00001’ karena awalan ‘P’ dihilangkan. Adapun perubahan yg dilakukan dapat diperhatikan pd bagian yg di-highlight.
dearsa
8 July 2011 at 08:37
Gpp Mas..
makasih Mas. Sudah saya coba barusan dan berhasil. ^_^
semoga kebaikan Mas dibalas oleh Tuhan. Amin..
makasih sekali lagi Mas.
Ditunggu tutorial2 selanjutnya yah Mas.
myrna
8 July 2011 at 09:41
mas kalau di mysql kan ada mysql_real_escape_string untuk special karakter ‘ (kutib satu).
jika di sql server menggunakan apa?
myrna
14 July 2011 at 09:44
mungkin bisa mencoba solusi ini: http://stackoverflow.com/questions/574805/how-to-escape-strings-in-mssql-using-php. semoga membantu.. 😀
dearsa
14 July 2011 at 13:21
mas pada saat saya tambah muncul PARSING JSON Request failed , tp pas pertama di coba bs ketambah tp saelanjtnya muncul sperti itu mas …
mohon bantuan nya mas …
buat tugas ne massss …..
dika
20 July 2011 at 21:28
mungkin bisa dianalisa error tsb terlebih dahulu dgn bantuan add-ons firebug..
dearsa
20 July 2011 at 23:12
Mas, jika mau ditambahkan autocomplete, di bagian mana saja yg musti di ubah?
Misalkan ada input text kode barang. jika kita mengisikan kode nya 11, maka akan muncul autocomplete nya. jika mengisikan kode 12, maka muncul autocomplete yg lain.
myrna
25 July 2011 at 13:05
test
ari
25 July 2011 at 20:04
Mas, bagaimana menambahkan autocomplete pada script mas?
myrna
12 September 2011 at 11:07
maaf bgt bru dibls pertanyaannya. mungkin bisa mencoba jQuery plugin: Autocomplete.
dearsa
21 October 2011 at 20:43
Maaf mas mau tanya, koq waktu saya import database yang sudah saya modifikasi di tabel login nya dengan menambahkan 1 user lagi untuk data login ( jadi ada 2 user dalam database ) , namun muncul error yg menyatakan table tidak bisa menginput data username ke-2 itu , padahal format dengan username ke-1 sudah sama persis, hanya beda nama, dan password saja.
Mohon bantuannya
Robertus Ariandi Setya Putra
16 September 2011 at 06:30
maaf mas bru dijawab pertanyaannya. untuk permasalahan tsb seharusnya bisa mas, mngkn diperhatikan lagi klo field ‘user_name’ adalah ‘primary key’ shg data untuk field tsb harus unik.
dearsa
21 October 2011 at 20:28
Tutorial agan mantab banget dah, sangat membantu saya yg masih noobie.. thanks gan. rajin update ya gan ane sering maen kesini dah, Bookmark
kiki
16 September 2011 at 15:58
iya sama2 kita belajar, sy jg masih nubie.. terima kasih sdh berkunjung..
dearsa
21 October 2011 at 20:33
artikelnya sangat menarik mas,
cuma ada sedikit masalah nie mas, waktu aku tambah atau update sering muncul pesan ini
“Error.
Parsing JSON Request failed!”;
mohon bantuannya, terima kasih
andri r
29 September 2011 at 06:44
maaf bgt mas baru saya jawab, soalnya lama bgt ga buka nie blog. hehe. 😀 apabila dri contoh source code tsb dimodifikasi, perlu memperhatikan bagian yg melakukan request ajax ke file proses_data.php. misalnya ketika melakukan penambahan data, saat data disimpan maka isi form (form_pelanggan.php) akan diproses pada file proses_data.php dimana respon balasan yg dikirimkan dalam bentuk ‘json’ . Nah dari sini bisa diperhatikan lagi apakah respon balasan tsb bisa diterima/diproses dgn baik pada bagian yg me-request. mas andri jg bisa memanfaatkan addons ‘firebug’ pd firefox untuk mengecek request ajax yg terjadi.
dearsa
21 October 2011 at 20:22
mantaappp…
terimakasih
ridaadj
7 October 2011 at 13:32
terimakasih smg bermanfaat.. 😀
dearsa
21 October 2011 at 20:29
[…] feed yang ada dalam aplikasi ini dibuat menggunakan model pengelolaan data seperti pada tulisan sebelumnya. Tab-tab RSS feed pada halaman ini akan ditampilkan berdasarkan data status aktif-nya (‘Y’ […]
Belajar Membuat Simple RSS Feed Reader dengan SimplePie, PHP dan Jquery | Mencece Blog Project
10 October 2011 at 15:04
Klo search, setelah di klik hal yang kedua masih jadi tampil semua ya?
andi
19 October 2011 at 11:02
oya mas, setelah sy cek ternyata benar seperti itu. hal itu karena kesalahan ketik pada file page_data.php bagian function pagination, sperti di bawah ini.
yg diketik namapelangan seharusnya namapelanggan. 😀
dearsa
21 October 2011 at 20:04
Mas maas saya bingung nie.. saya merubah tabelnya dengan tabel kelas yang berisi kd_kelas dan nama_kelas..
setelah melakukan beberapa modifikasi. ada beberapa masalah
1) – saat diklik tambah, muncul dengan baik
– hanya saja saat disimpan daanya tidak masuk ke tabelnya tanpa ada pemberitahuan apapun
2) – edit , saat edit di klik meuncul data dalam tbel dengan baik
– hanya saja saat updatenya diklik datanya tidak berubah
3) hapus berjalan dengan baik
mohon pencerahannya ya mas.. terima kasih benar2 tutorial yang membantu 🙂
fahrizalterifahrizal
23 October 2011 at 09:17
sebelumnya dlm melakukan simpan, update maupun hapus digunakan mekanisme ajax. data dari formpelanggan ketika disubmit diproses pd file proses_data.php. bisa diperhatikan lagi modifikasi yg dilakukan pd file2 tsb. untuk membantu menganalisa mekanisme ajax yg terjadi, apabila mas menggunakan firefox atau chrome bisa memanfaatkan addons ‘firebug’. setelah firebug di-install: aktifkan firebug kemudian ‘enabled’ bagian ‘Console’ pstikan ‘Show XMLHttpRequest’ tlh tercentang. setiap mekanisme ajax yg terjadi dpt diperhatikan pd console tsb.
dearsa
26 October 2011 at 21:39
wah mas @dearsa terima kasih untuk masukannya.. Alhamdulillah sudah bisa 😉 … senangnya.. oh iya mas kalau untuk hasil dari proses carinya itu bisa diexport ke excel berdasarkan hasilnya saja gak Mas???
Saya bingung.. export to excel saya hanya menampilkan semua data di databasenya bukan dari hasil carinya.. terima kasih ya mas @dearsa.. benar2 tutorial yang bermanfaat ^^
fahrizalteri
27 October 2011 at 09:21
apabila mas ingin menampilkan data berdasarkan hasil carinya saja, itu bisa. menurut saya, perlu sebuah ‘button’ ato mungkin yg sdh mas buat sebelumnya serta sebuah file php (misal exportexcel.php) ato bisa dijadikan satu pd file proses-data.php utk proses export ke excel tsb. nah ketika memilih kriteria pencarian dan button cari diklik (utk search data) dimana hasil ditemukan maka button untuk export tsb akan aktif, ketika diclick (buat code utk menangani event click tsb) selanjutnya akan mengirimkan data kriteria pencarian tadi utk diproses pd file misal exportexcel.php. smoga membantu.. 😀
dearsa
31 October 2011 at 21:31
oh iya untuk carinya juga belum bisa berjalan padahal sudah dirubah berdasarkan kd_kelas dan nama_kelas
fahrizalterifahrizal
23 October 2011 at 09:18
pencarian data akan diproses pd file proses_data.php dan ditampilkan hasilnya dlm bentuk tabel. perhatikan pula function loadData pd file: pelanggan.js, proses_data.php, dan formpelanggan.php, pastikan input pencarian (data yg dicari) tsb bisa diproses pd file proses_data.php. dlm file tsb terdapat query ke database berdasarkan input pencarian yg diberikan.
dearsa
26 October 2011 at 21:59
mas maaf saya bingung.. saya telah merubah tabelnya dan ternyata berhasil
hanya saja saat melakukan proses tambah saat yang pertama itu sukses,, dan saat penambahan data yang kedua muncul “Parsing JSON Request failed” kenapa ya mas??? apa karena daabasenya atau kenapa???
tery
23 October 2011 at 11:26
klo misalny saya tambahin ada tangal gitu, trus cara bikin funsi search dengan ada range tanggalny
ex:
ID PELANGGAN | NAMA PELANGGAN | NO HP | TANGGAL DAFTAR
jadi misalny mau di search tanggal berdasarkan range gmn ya ( tanggal 25-10-2011 sampai dengan 26-10-2011)
andre
25 October 2011 at 11:50
untuk pencarian berdasarkan range tanggal, mas bisa memodifikasi code utk search yg ada. tambahkan dua input untuk memasukkan tgl awal dan tgl akhir dari pencarian. nah, pemorosesan pencarian data ada pd file page_data.php, pd file tsb, bisa ditambahkan query untuk pencarian dgn kriteria range tanggal, misal:
select * from pelanggan where tgl_daftar between ‘2011-10-25’ and ‘2011-10-26’. smoga membantu.. 😀
dearsa
31 October 2011 at 21:38
mantap banget ni aplikasi crud data nya mas, , ,
semoga mas makin kreatif lagi dalam bikin coding dan dishare buat kami semua yang baru-baru belajar dalam pemrograman web
mas mau nanya, apa keuntungan kalau kita parsing data ke JSon terlebih dahulu daripada data langsung yang dari mysql kita gunakan untuk crud data. terimakasih
mrrens
25 October 2011 at 12:19
iya mas, kita sama2 belajar. sebenarnya dalam contoh aplikasi crud tsb data dari form ketika submit dikirim melalui mekanisme ajax dgn method HTTP GET ato POST, tergantung mana yg digunakan. sedangkan format json (dataType) digunakan untuk menerima respon balasan berupa status dri proses yg dilakukan pd file proses_data.php. utk lebih lengkap ttg jQuery.ajax() bisa merujuk ke link ini. penggunaan format json utk respon balasan, menurut saya lebih simple.
dearsa
26 October 2011 at 22:27
iya mas, kan saya ada baca tutorial jadi di tutorial itu data yang dari database mysql di parsing ke Json terlebih dahulu menggunakan php, baru setelah itu di tampilkan datanya, itu menurut mas gimana ya ? apa manfaat nya ?
terimakasih
mrrens
27 October 2011 at 13:03
json (JavaScript Object Notation) merupakan format pertukaran data yg digunakan antara client dan server, mirip seperti xml. menurut saya parsing ke json untuk mempermudah pengiriman data hasil query db mysql ke bagian yg meminta seblmnya. mungkin ini jg bisa untuk meng-enkapsulasi proses query databasenya (tdk langsung mengaksesnya). lebih lengkap mengenai json, mungkin mas bisa membaca tulisan pd link ini. smoga membantu.. 😀
dearsa
31 October 2011 at 21:56
mas gimana ya caranya agar data yang di tampilkan di table cuman sebagian terus kita buat link untuk view datanya untuk menampilkan data secara keseluruhan ?
rens
26 October 2011 at 09:11
utk tampilan data bisa dimodifikasi pd file page_data.php dan pagination_class.php. jumlah data yg mau ditampilkan jg dpt dibatasi melalui query database.
dearsa
26 October 2011 at 22:09
mas saya minta tolong bantuanya ya, gini script upload image mas telah saya edit dan saya sesuaikan dengan aplikasi yang sedang saya bangun, ,
jadi ini adalah tempat menyimpan image tsb ../../imgupload/$namafoto, setelah proses simpan dklik, image berhasil disimpan, tetapi ada pesan kesalahan seperti ini Permintaan URL tidak ditemukan!
kira2 penyebabnya apa ya mas,
pada saat saya edit juga image tidak mau tampil mas knp ya ? padahal imageny ada pada folder ../../imgupload/$namafoto
mrrens
31 October 2011 at 10:53
iya mas saya jg kdng mengalami hal yg sama, biasanya hal ini terjadi karena ada kesalahan di code saat permintaan diproses pd file proses_data.php. kesalahan penulisan lokasi utk folder penyimpanan file upload jg menyebabkan hal tersebut, selain itu bisa jg krn kesalahan pengetikan code, kesalahan query saat save atau update data.
misal utk folder penyimpanan file upload: “htdocs\webku\modul\pelanggan\imgupload” dan file “proses_data.php” ada di folder “pelanggan” maka:
$simpan = “imgupload/$namafoto”;
sedangkan ketika edit, jika lokasi file upload seperti di atas maka: img src-nya
selain itu pastikan folder imgupload bersifat ‘server writable’.
mungkin bisa dicek dan dicoba2 lagi mas.. 😀
dearsa
31 October 2011 at 21:12