Apabila kita mempunyai data yang sangat banyak misalnya ribuan bahkan jutaan seperti hasil pencarian di google, maka pagingnya tentu sangat banyak yang akan ditampilkan dalam beberapa baris.
Tentu paging seperti gambar diatas kurang efektif dan cukup mengganggu tampilan, untuk mengatasi hal tersebut, kita hanaya akan menampilkan tiga angka apabila berada dihalaman pertama, halaman kedua dan halaman terakhir, seperti contohnya 1 2 3 ... 8 dan lima paging untuk halaman lainnya ( dua halaman angka sebelum dan sesudah halaman aktif), misalnya halaman aktif adalah halaman 3, maka pagingnya 1 2 3 4 5 ... 8.jadi yang diubah hanya pada bagian menampilkan halaman angka saja.
oh iya, untuk artikel kali ini saya pakai OOP yang akan kita bungkus menjadi class (function) dalam sebuah file tersendiri, sehingga apabila kita memerlukan paging, kita tinggal include saja filenya tanpa harus menulis ulang dalam setiap file tampil data yang memerlukan paging
1. yang pertama kita akan membuat class paging yang berisi fungsi fungsi untuk mengelola paging
<?php class Paging{ function cariPosisi($batas){ $halaman = @$_GET['halaman']; if(empty($halaman)){ $position = 0; $halaman = 1; }else{ $position = ($halaman - 1) * $batas; } return $position; } function jmlHalaman($jmlData,$batas){ $jmlHal = ceil($jmlData/$batas); return $jmlHal; } Function linkHal($halamanAktif,$jumlahHalaman){ $link_halaman = ""; $file = $_SERVER['PHP_SELF']; // Link First dan Previous $prev = $halamanAktif-1; if($halamanAktif < 2){ $link_halaman .= "First Prev "; }else{ $link_halaman .= "<a href='$file?halaman=1'>FIRST</a> <a href='$file?halaman=$prev'>PREV</a> "; } // link halaman 1,2,3,... // Angka awal $angka = ($halamanAktif > 3 ? "... " : " "); for($i=$halamanAktif-2;$i<$halamanAktif;$i++){ if ($i < 1 )continue; $angka .= "<a href='$file?halaman=$i'>$i</a> "; } // Angka tengah $angka .= "<b>$halamanAktif</b> "; for($i=$halamanAktif+1;$i<($halamanAktif+3);$i++){ if($i > $jumlahHalaman) break; $angka .= "<a href='$file?halaman=$i'>$i</a> "; } // ANgka Akhir $angka .= ($halamanAktif+2<$jumlahHalaman ? " ... <a href='$file?halaman=$jumlahHalaman'>$jumlahHalaman</a> " : ""); $link_halaman .= $angka; // Link Next dan Last if($halamanAktif < $jumlahHalaman){ $next = $halamanAktif+1; $link_halaman .= "<a href='$file?halaman=$next'>Next</a> <a href='$file?halaman=$jumlahHalaman'>Last</a> "; }else{ $link_halaman .="Next Last "; } return $link_halaman; } } ?>
2. untuk tahap yang terakhir, kita membuat view untuk pagingnnya dengan database nya
<?php $con = mysqli_connect("localhost","root","","dboop"); include"fungsi_paging.php"; $p = new Paging(); $batas = 10; $posisi = $p->cariPosisi($batas); $anggota = mysqli_query($con,"select * from anggota order by nama asc limit $posisi, $batas"); $anggota1 = mysqli_query($con,"select * from anggota"); if(mysqli_num_rows($anggota1)){ echo"<table border=1 cellspacing='0'>"; echo"<tr bgcolor='3300CC'> <th width='20' align='center'>No</th> <th width='150' align='center'>Nama</th> <th width='150' align='center'>Alamat</th> </tr>"; $no = 1+$posisi; while($r=mysqli_fetch_array($anggota)){ echo"<tr> <td align='center'>$no</td> <td width='200'>$r[nama]</td> <td width='200'>$r[alamat]</td> </tr>"; $no++; } echo"<table>"; $jumlahData = mysqli_num_rows($anggota1); $jml_halaman = $p->jmlHalaman($jumlahData,$batas); $link = $p->linkHal(@$_GET['halaman'],$jml_halaman); echo"<br \>Hal : $link"; } ?>
jika kalian mengikuti langkah-langkah diatas, anda pasti akan berhasil. dan untuk tutorial yang lebih lengkap tentang pemrogaramn web dengan menggunakan bahasa pemrograman PHP anda bisa kunjungi di sks122.blogspot.com. semoga artikel yang saya berikan bisa memberi solusi pada temen temen yang sedang belajar membuat paging.