Home > Ajax, JavaScript, JQuery, PHP, Tips & Trick > Membuat Data Pagging Dengan Ajax

Membuat Data Pagging Dengan Ajax

January 4th, 2009 Leave a comment Go to comments

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… ^_^

  1. January 5th, 2009 at 02:09 | #1

    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

  2. January 5th, 2009 at 09:36 | #2

    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

  3. February 13th, 2009 at 04:06 | #3

    nice post,, thanks gun tutorialnya….

  4. February 24th, 2009 at 18:34 | #4

    ups, nice post, ditunggu yg pake JSON ya bang. :)

  5. inoex
    August 4th, 2009 at 01:29 | #5

    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

  6. August 30th, 2009 at 09:27 | #6

    klo itu namanya autocomplete mas, semoga nanti saya sempet bikin artikel ttg autocomplete

  7. September 18th, 2009 at 20:44 | #7

    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?

  8. dani sukma
    January 16th, 2010 at 20:05 | #8

    terima kasih baaaanyyyaaaakkkkk…. ini dia yang saya cari…

  9. subame
    March 7th, 2010 at 04:49 | #9

    trim banyak kkak..
    ni pneng jg q pelajari…

  10. July 13th, 2010 at 20:16 | #10

    Assalamu Alaikum…
    ma kasih banyak ilmunya…

  1. No trackbacks yet.