Membuat Data Pagging Dengan Ajax
Dalam menampilkan data, pagination atau pagging adalah element terpenting karena berfungsi untuk memilah-milah data menjadi beberapa halaman apabila data tersebut dianggap terlalu panjang/banyak untuk ditampilkan pada satu halaman.
Seiring dengan perkembangan web 2.0, kebutuhan akan Ajax dalam setiap halaman web makin digemari dan pada artikel kali ini saya akan memberikan cara agar anda bisa membuat pagging dengan menggunakan Ajax. Oleh karena itu pagging kali ini tidak akan membuat kita menunggu halaman selesai di loading sampai kita bisa tahu isi data pada selanjutnya.
Kali ini saya pakai framework JQuery agar script lebih ringan dan mudah dipelajari, langsung saja anda masukan script di bawah ini di tengah-tengah tag HEAD.
6 7 8 9 10 11 12 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 | // setup var PHPFile = 'data.php'; // format cara penanganan parameter dan response sudah diatur dalam kesatuan program ini var recordPerPage = 5; // jumlah baris yang ditampilkan tiap halaman var elementTable = '#divTable'; // element yang akan menampilkan data var elementNav = '#divNavigator'; // element yang akan menampilkan link-link pagging $(document).ready( function(){ $.post(PHPFile+'?action=getdata', // untuk mengambil data masukan alamat "data.php?action=getdata" {limit: recordPerPage, page: 1}, // parameter untuk "data.php?action=getdata" adalah "limit" dan "page", dikirimkan secara post function(data){ if(data != 'EMPTY'){ // jika response tidak berupa kata 'EMPTY' $(elementTable).html(data); // masukan hasil response secara langsung ke element yang akan menampilkan data $.post(PHPFile+'?action=getcount',function(totalRows){ // untuk mendapatkan total baris keseluruhan pada data yang akan di-pagging gunakan "data.php?action=getcount" if(recordPerPage < totalRows){ // jika total keseluruhan baris lebih besar dari total baris per halaman maka tampilkan pagging var i = Math.ceil(totalRows/recordPerPage); // untuk mendapatkan berapa banyak link pagging yang akan ditampilkan var navigators = []; // siapkan array navigator yang akan menyimpan html link for(var j=1;j<=i;j++) // looping angka navigator navigators.push('<a href="javascript:;">'+j+'</a>') // navigator berupa link sederhana, anda bisa custom dengan style anda sendiri $(elementNav).html(navigators.join(' ')); // hasil array link navigator di masukkan ke element yang akan menampilkan link pagging $(elementNav+' a').click( // beri event onClick pada setiap link navigator function(){ var _page = $(this).text(); // ambil angka pada link pagging // ambil lagi data berdasar angka pada link pagging $.post(PHPFile+'?action=getdata', {limit: recordPerPage, page: _page}, function(data){ if(data != 'EMPTY') $(elementTable).html(data); } ); $(elementNav+' a').css('font-weight','normal'); // semua link pagging di normalkan style-nya $(this).css('font-weight','bold'); // link pagging yang baru saja di click di beri efek bold } ); } }); }else alert('Data Kosong'); // jika response = 'EMPTY' maka alert "Data kosong" }); } ); |
Script diatas berfungsi untuk membuat pagging dan menampilkan data pagging pada element-element HTML yang sudah ditentukan. Lalu pada BODY HTML cukup siapkan saja dua tag DIV.
53 54 | <div id="divTable" style="height: 160px;"></div> <div id="divNavigator"></div> |
Element yang tak kalah penting adalah proses data pada PHP, berikut adalah file PHP yang mempunyai 2 fungsi yaitu menampikan table data dan memberikan response total keseluruhan data yang nantinya akan dijadikan link-link pagging oleh javascript.
<? isset($_GET['action']) or die('error params'); // file ini harus dipanggil dengan parameter "action", misal "data.php?action=getdata" atau "data.php?action=getcount" mysql_connect('localhost','root',''); mysql_select_db('test'); switch($_GET['action']){ case 'getdata': $page = intval($_POST['page']); // index halaman $limit = intval($_POST['limit']); // jumlah baris per pagging /* ambil batas limit, * misal page = 1, jumlah baris = 10 * maka batas limit = (1-1) * jumlahbaris = 0 -> SELECT * FROM pegawai LIMIT 0,10 * misal page = 2, jumlah baris = 10 * maka batas limit = (2-1) * jumlahbaris = 10 -> SELECT * FROM pegawai LIMIT 10,10 * * */ $startPage = ($page-1) * $limit; $sql = "SELECT * FROM pegawai LIMIT $startPage,$limit"; $query = mysql_query($sql); if(mysql_num_rows($query) > 0){ ?> <table border="1"> <tr> <th>NIP</th> <th>Nama</th> <th>Umur</th> <th>Alamat</th> </tr> <? while($row = mysql_fetch_object($query)){ ?> <tr> <td align="center"><?=$row->NIP?></td> <td><?=$row->nama?></td> <td align="center"><?=$row->umur?> thn</td> <td><?=$row->alamat?></td> </tr> <? } ?> </table> <? }else echo 'EMPTY'; break; case 'getcount': $sql = "SELECT count(NIP) FROM pegawai"; // ambil total record pada table pegawai list($total) = mysql_fetch_row(mysql_query($sql)); echo $total; break; } ?>
Untuk melihat langsung demo dari program ini dapat anda lihat di link ini
Untuk mendownload program melalui link ini
Semoga bermanfaat… Terima kasih… ^_^
Chandra Jatnika

Hmm request 2x tu.. pa gak boros resource… format outputnya juga dalam bentuk html? jadinya menambah ukuran output 2-3 x data.
gimana kalo format datanya json. jadi gak perlu 2x
Iya sih, tapi artikel kali ini saya pengen buat lebih simple n mudah di mengerti orang yg ngebaca aja. Makasih atas masukannya… Artikel selanjutnya saya pake JSON deh… thanks mas
nice post,, thanks gun tutorialnya….
ups, nice post, ditunggu yg pake JSON ya bang.
mas bisa gak di jelasin dikit mengenai pencarian data di database dengan ajax tanpa menggunakan tombol search,artinya ketika kita mengetikan 1 kata atau 1 huruf saja maka langsung ajax merespon dengan menampilkan data yg diinginkan
klo itu namanya autocomplete mas, semoga nanti saya sempet bikin artikel ttg autocomplete
Wah thanks bgt ne bro…ga sangka nemukin d blog orang indo malah,hahaha lage nyari script genean neh thanks2
btw autocomplete klo datana puluhan ribu gt gmana?
terima kasih baaaanyyyaaaakkkkk…. ini dia yang saya cari…
trim banyak kkak..
ni pneng jg q pelajari…
Assalamu Alaikum…
ma kasih banyak ilmunya…