Masih mengenai paging dalam PHP… sebenarnya dalam membuat suatu sistem atau sebuah aplikasi baik itu yang berbasis web atau desktop, logikanya itu tergantung dari programmer sendiri bagaimana mereka membuat, yang terpenting hasilnya. Tapi bagi para pemula yang mulai menggeluti dunia per-codingan…hehehe… Mengawali dari yang lebih mudah merupakan langkah yang bagus untuk memulai, yang penting “KEEP MOVING FORWARD…”(Walt Disney). Udah dulu basa-basinya…langsung ke permasalahan…
Berdasarkan judul di atas sebenarnya kita hanya cukup menggunakan 3 langkah yang lumayan mudah dalam menerapkan paging pada suatu skrip yang masih belum ada pagingnya. Berikut keterangan / jabaran dalam langkah – langkahnya :
- Tentukan limit/batas, kemudian cek pada halaman dan posisi berapa pada saat skrip dijalankan.
- Sesuaikan perintah SQL dengan limit (batas) dan posisi.
- Hitung total data dan halaman serta tampilkan link untuk navigasi halaman.
<center><table width="300" border="1" cellpadding="4" cellspacing="1"><tr><th>NO</<th><th>NIS</th><th>NAMA</th></tr> <?php mysql_connect("localhost","root","root"); mysql_select_db("dbpesantren"); // Langkah 1 tentukan batas, cek halaman & posisi data $batas = 10; $halaman = $_GET['halaman']; if (empty ($halaman)){ $posisi = 0; $halaman = 1; } else { $posisi = ($halaman - 1) * $batas; } // Langkah 2 Sesuaikan perintah SQL dengan posisi dan batas $tampil = "SELECT * FROM master_santri LIMIT $posisi, $batas"; $hasil = mysql_query($tampil); $no = $posisi + 1; while($r= mysql_fetch_array($hasil)){ echo "<tr><td align='center'>$no</td><td>$r[NOMOR_INDUK_SANTRI]</td><td>$r[NAMA_SANTRI]</td></tr>"; $no++; } echo "</table><br /><br />"; // Langkah 3 hitung total data dan halaman serta link navigasi 1,2,3... next dan prev-nya $tampil2 = mysql_query("SELECT * FROM master_santri"); $jmlData = mysql_num_rows($tampil2); $jmlHal = ceil($jmlData/$batas); //Link ke halaman sebelumnya (Prev) if ($halaman > 1){ $prev = $halaman - 1; echo " <a href=$_SERVER[PHP_SELF]?halaman=$prev><< Prev </a>"; } else { echo "<span class=disabled><< Prev </span>"; } //Tampilkan link halaman 1,2,3,... for($i=1;$i<=$jmlHal;$i++){ if ($i != $halaman){ echo "<a href=$_SERVER[PHP_SELF]?halaman=$i> $i </a>"; } else { echo " $i "; } } //Link ke halaman berikutnya (Next) if ($halaman < $jmlHal){ $next = $halaman + 1; echo "|<a href=$_SERVER[PHP_SELF]?halaman=$next> Next >></a>"; }else{ echo "Next >> </center>"; } ?>
Keterangan Skrip :
• Saat skrip pertama kali dijalankan, maka akan memeriksa terlebih dahulu apakah halaman kosong atau tidak..??? Kalau benar halaman kosong… maka $halaman = 1 dan $posisi = 0. Kalau $halaman tidak kosong maka berlakulah rumus untuk menentukan nilai posisi, yaitu: $posisi = ($halaman - 1) * $batas. Misalnya berada pada halaman 4, maka nilai $posisi = (4-1)*10 = 30.
• Pada langkah ketiga ada perintah ceil($jmldata/$batas). Fungsi ceil berguna untuk menghasilkan bilangan bulat, apabila hasilnya pecahan. Maka akan dibulatkan ke atas (tidak peduli pecahannya berada dibawah atau diatas koma). Misalnya jika $jmldata = 33 dan $batas = 10 maka hasilnya 3,3. Dengan fungsi ceil(33/10) hasilnya 4, maka ada 4 halaman.
Sekarang coba jalankan skrip diatas dan cobalah link untuk navigasi 1,2,3…Lihat pada gambar 1 untuk hasilnya…(Warna tabel dan style tabel tergantung dari css anda).
Gambar 1. Paging sederhana |