Paging adalah teknik saat menampilkan data kedalam halaman halaman yang berbeda. Teknik ini digunakan jika data yang ada sangat banyak sehingga tidak mungkin tampil dalam satu halaman. Alasan yang lain, dengan paging, loading halaman lebih cepat karena php hanya meminta sebagian data saja. Contoh paging yang anda pakai tiap hari(namun jarang diperhatikan) adalah hasil pencarian Google.
Untuk memberikan gambaran yang lebih real tentang paging, kita akan membahas teknik paging dengan cara yang mudah dan sederhana. Dalam tutorial kali ini, saya akan menampilkan data negara didunia. Data SQL saya ambil dari http://27.org/isocountrylist/.
Langkah utama membuat paging halaman di PHP adalah sebagai berikut:
1. Membuat script koneksi
2. Menentukan total data yang akan ditampilkan pada tiap halaman dan menentukan posisi halaman
3. Membuat skrip SQL sesuai dengan posisi halaman yang diminta dan menampilkannya
4. Menampilkan nomor paging di bagian bawah tabel.
1. Membuat script Koneksi
<?php define('db_host','localhost'); define('db_user','root'); //usename mysql define('db_pass',''); //password mysql jika ada //nama database dinama tabel country berada define('db_name','candralabdb'); mysql_connect(db_host,db_user,db_pass); mysql_select_db(db_name); ?>
2. Menentukan total data yang akan ditampilkan pada tiap halaman dan menentukan posisi halaman
Script selanjutnya dari langkah 2 sampai langkah empat ada disatu file dengan nama country.php
//2). Menentukan total data yang akan //=== ditampilkan pada tiap halaman dan menentukan posisi halaman //variabel dan kode awal untuk menentukan posisi halaman saat ini //dipakai untuk melimit quiery $batas=10; //satu halaman menampilkan 10 baris $halaman=$_GET['halaman']; $posisi=null; if(empty($halaman)){ $posisi=0; $halaman=1; }else{ $posisi=($halaman-1)* $batas; } //3). melakukan query dan menampilkan data //query data menggunakan limit $posisi dan batas $query="select * from country limit $posisi,$batas "; $result=mysql_query($query) or die(mysql_error()); $no=1; while($rows=mysql_fetch_object($result)){ ?> <tr> <td><?php echo $posisi+$no ?></td> <td><?php echo $rows -> iso;?></td> <td><?php echo $rows -> name;?></td> <td><?php echo $rows -> printable_name;?></td> </tr> <?php $no++; }?> </table> <br> <?php // 4). code untuk Menampilkan nomor paging di bagian bawah tabel. $sql_paging = mysql_query("select iso from country"); $jmldata = mysql_num_rows($sql_paging); $jumlah_halaman = ceil($jmldata / $batas); echo "Halaman :"; for($i = 1; $i <= $jumlah_halaman; $i++) if($i != $halaman) { echo "<a href=country.php?halaman=$i>$i</a>|"; } else { echo "<b>$i</b>|"; } mysql_close();?> <br> Jumlah data :<?php echo $jmldata;?>
Hasil dari program diatas akan tampak seperti gambar dibawah ini
Jika anda tertarik mencoba, lihat demonya disini atau silahkan download kodenya disini
Min kenapa punya saya kalo di klik ke halaman lainnya di pagination ini selalu muncul halaman home?
mas kalau mau membatasi nmor pagingny gimana ya?
Om, mau tanya cara membatasi nomor yang dibawah bagaimana?
contohnya ane mau buat seperti ini :
[1][2][3][4][5]…[10.][101][101][102]
it’s work..thanks :)
matur suwun mas..
gan,
masih ada error ini :
Notice: Undefined index: halaman in C:\xampp\htdocs\pagingphpmysql\country.php on line 16
mohon pencerahannya
tambahkan baris error_reporting(0); di baris kedua file index.php
Mas Chandra,
Bila page nya kenapa kalau di klik halaman selanjutnya tidak mau tampil datanya
terimakasih mas,, saya barusan download,, mau saya pelajari
klo pake prev dan next gimana gan?
kurang di atas
pak, demo-nya kok ga diedit di mysql_connect(); jadi error tuh.. :D
iya..kemarin pindahan server, sebagian scriptnya tidak terupdate
Mantap gan Tutorial pagingnya…
Sukses Full….
Bagus gan,
Kalau mau buat backgorund nomor halamanya gimana gan?
bang candra, pas di country.php ada Notice: Undefined index: halaman in C:\xampp\htdocs\pagingphpmysql\country.php on line 16, mohon bantuannya bang…
ada tipsnya supaya yg muncul seperti ini?
1 …5 6 7 8 9 … 15
pakai if else mungkin bisa
MAbtap gan.. langsung di unduh untuk dicoba.. kalo ada eror saya akan kembali kesini :mrgreen:
silahkan, semoga sukses
oh iya, udah aq benerin kodenya, itu cuman ganti baris
echo $no
menjadi echo $posisi+$no;
itu nomor dihalaman 2 dan selanjutnya kok sama ya? 1 – 10 terus.. :P
oiya klu halaman pagingnya jadi ky gini gimana gan kodingnya
<>