Pagination merupakan suatu metoda untuk menampilkan data ke dalam beberapa halaman. Pagination pada website, sama halnya seperti buku yang disajikan dalam bentuk halaman demi halaman. Isi seluruh buku tidak disajikan di dalam selembar kertas yang sangat panjang, melainkan dibagi-bagi ke dalam ratusan halaman sehingga mudah untuk dibaca. Pagination diperlukan pada suatu database yang memiliki jumlah data yang luar biasa banyak. Halaman website juga memiliki keterbatasan ruang sehingga tidak mungkin menampilkan seluruh ribuan data di dalam satu halaman saja. Namun data-data tersebut harus dipecah menjadi bagian-bagian kecil untuk ditampilkan pada halaman website.
Jika anda berusaha memaksakan untuk menampilkan data dengan jumlah yang sangat banyak hanya pada satu halaman, pengaruh yang langsung dirasakan adalah pada browser itu sendiri. Saat awal load, browser akan menampilkan data satu persatu dengan normal dan akan melambat dan akhirnya berhenti membeku karena sudah tidak mampu lagi menampilkan data pada layar. Dan pada akhirnya browser tersebut hang (macet). Efek yang dirasakan bagi pengguna sendiri, browser terasa lambat merespon saat menampilkan data, belum lagi data yang ditampikan begitu banyak sehingga hanya membingungkan pengguna. Dan ini adalah contoh buruk yang harus dihindari.
Pada tutorial kali ini saya akan menjelaskan bagimana cara membuat pagination pada kumpulan data dan membaginya ke dalam bagian-bagian kecil. Kemudian menampilkannya menjadi beberapa buah halaman.
Database sendiri adalah kumpulan dari tabel data. Database berfungsi sebagai induk (naungan) dari tabel yang akan dibuat. Untuk membuat database, silahkan aktifkan xampp ataupun wamp server. Kemudian untuk mengakses phpMyadmin silahkan ketik pada browser localhost/phpmyadmin → New. Lalu pada tab Databases ketik nama database (kali ini saya menggunakan nama 'sample') → kemudian tekan Create
Kemudian langkah berikutnya adalah membuat tablenya. Table kali ini berisi data tentang mahasiswa meliputi id, NIM, nama mahasiswa dan jenis kelamin.
Silahkan masuk pada database yang sudah dibuat lalu klik pada tab SQL, kemudian salin kode berikut tanpa harus mengetikkan secara manual :
CREATE TABLE `data_mahasiswa` (
`id_mahasiswa` int(11) NOT NULL AUTO_INCREMENT,
`NIM` varchar(50) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`nama` varchar(200) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`jenis_kelamin` varchar(20) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
PRIMARY KEY (`id_mahasiswa`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 67 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
Kemudian langkah terakhir adalah memasukkan datanya satu persatu. Anda boleh menyalin kode berikut dan jalankan pada SQL tab tanpa harus mengetikkannya secara manual.
INSERT INTO `data_mahasiswa` VALUES (1, '001', 'Tommy', 'Laki-laki');
INSERT INTO `data_mahasiswa` VALUES (2, '002', 'Ridwan', 'Laki-laki');
INSERT INTO `data_mahasiswa` VALUES (3, '003', 'Bambang', 'Laki-laki');
INSERT INTO `data_mahasiswa` VALUES (4, '004', 'Beben', 'Laki-laki');
INSERT INTO `data_mahasiswa` VALUES (5, '005', 'Wati', 'Perempuan');
INSERT INTO `data_mahasiswa` VALUES (6, '006', 'Paul', 'Laki-laki');
INSERT INTO `data_mahasiswa` VALUES (7, '007', 'Billy', 'Laki-laki');
INSERT INTO `data_mahasiswa` VALUES (8, '008', 'Eru', 'Perempuan');
INSERT INTO `data_mahasiswa` VALUES (9, '009', 'Johnson', 'Laki-laki');
INSERT INTO `data_mahasiswa` VALUES (10, '010', 'Tutuku', 'Perempuan');
INSERT INTO `data_mahasiswa` VALUES (11, '011', 'Barbara', 'Perempuan');
INSERT INTO `data_mahasiswa` VALUES (12, '012', 'Joseph', 'Laki-laki');
INSERT INTO `data_mahasiswa` VALUES (13, '013', 'Robert', 'Laki-laki');
INSERT INTO `data_mahasiswa` VALUES (14, '014', 'Soleh', 'Laki-laki');
INSERT INTO `data_mahasiswa` VALUES (15, '015', 'Mollel', 'Laki-laki');
INSERT INTO `data_mahasiswa` VALUES (16, '016', 'Wendy', 'Laki-laki');
INSERT INTO `data_mahasiswa` VALUES (17, '017', 'Nails', 'Laki-laki');
INSERT INTO `data_mahasiswa` VALUES (18, '018', 'Aris', 'Laki-laki');
INSERT INTO `data_mahasiswa` VALUES (19, '019', 'Arian', 'Perempuan');
INSERT INTO `data_mahasiswa` VALUES (20, '020', 'Rudy', 'Laki-laki');
INSERT INTO `data_mahasiswa` VALUES (21, '021', 'Kerri', 'Laki-laki');
INSERT INTO `data_mahasiswa` VALUES (22, '022', 'Wiji', 'Perempuan');
INSERT INTO `data_mahasiswa` VALUES (23, '023', 'Arjun', 'Laki-laki');
INSERT INTO `data_mahasiswa` VALUES (24, '024', 'Ubaidillah', 'Laki-laki');
INSERT INTO `data_mahasiswa` VALUES (25, '025', 'Supriatna', 'Laki-laki');
INSERT INTO `data_mahasiswa` VALUES (26, '026', 'Carik', 'Laki-laki');
INSERT INTO `data_mahasiswa` VALUES (27, '028', 'April', 'Perempuan');
INSERT INTO `data_mahasiswa` VALUES (28, '028', 'Suharto', 'Laki-laki');
INSERT INTO `data_mahasiswa` VALUES (29, '029', 'Dedy', 'Laki-laki');
INSERT INTO `data_mahasiswa` VALUES (30, '030', 'Hari', 'Laki-laki');
INSERT INTO `data_mahasiswa` VALUES (31, '031', 'Bagas', 'Laki-laki');
INSERT INTO `data_mahasiswa` VALUES (32, '032', 'Bintang', 'Laki-laki');
INSERT INTO `data_mahasiswa` VALUES (33, '033', 'Mahlil', 'Laki-laki');
INSERT INTO `data_mahasiswa` VALUES (34, '034', 'Alul', 'Laki-laki');
Database beserta data tablenya sudah siap. Kemudian hal yang perlu dilakukan adalah mengakses data tersebut pada server. Untuk itu perlu disiapkan koneksi sebagai jembatan antara PHP dan Mysql.
Kode Script :
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <meta charset="utf-8">
5. <title>Pagination PHP dan Mysql</title>
6. <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet">
7. <style>
8. body,*{font-family: 'Roboto', sans-serif;}
9. body {background:#fdffbc;}
10. .container_table th,td {width:120px;height:28px;padding:5px;}
11. .container_table tr th:nth-child(1), .container_table tr td:nth-child(1) {width:66px;}
12. .container_table tr:nth-child(odd){background-color:#96bb7c;}
13. .container_table tr:nth-child(even){background-color:#184d47;color:#fff;}
14. </style>
15. </head>
16. <body>
17. <?php
18. /*get db connection*/
19. $koneksi=mysqli_connect("localhost","root","","sample") or die('tak dapat mengakses database'); /*urutan : host/user/password/nama_database*/
20. $seq=mysqli_query($koneksi,"select * from data_mahasiswa order by id_mahasiswa asc");
21. $jml_data=mysqli_num_rows($seq);
22.
23. /*view data*/
24. if($jml_data>0){
25. echo "<table class='container_table'>";
26. echo "<tr><th>NIM</th><th>Nama</th><th>Jenis Kelamin</th></tr>";
27. while($data=mysqli_fetch_array($seq)){
28. echo "<tr><td>".$data['NIM']."</td><td>".$data['nama']."</td><td>".$data['jenis_kelamin']."</td></tr>";
29. }
30. echo "</table>";
31. }
32. ?>
33. </body>
34. </html>
35.
Jika dijalankan akan menampilkan data secara keseluruhan dan tanpa pagination.
Untuk membagi seluruh data dan menampilkannya halaman demi halaman, data tersebut perlu dipecah. Caranya dengan menggunakan parameter posisi halaman dan batas (jumlah) data yang akan ditampilkan. Posisi halaman diperlukan sebagai acuan sebagai halaman aktif yang nantinya digunakan sebagai acuan untuk menuju halaman lain, halaman sebelumnya dan juga halaman sesudahnya.
Kode Script :
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <meta charset="utf-8">
5. <title>Pagination PHP dan Mysql</title>
6. <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet">
7. <style>
8. body,*{font-family: 'Roboto', sans-serif;}
9. body {background:#fdffbc;}
10. /*data */
11. .container_table th,td {width:120px;height:28px;padding:5px;}
12. .container_table tr th:nth-child(1), .container_table tr td:nth-child(1) {width:66px;}
13. .container_table tr:nth-child(odd){background-color:#96bb7c;}
14. .container_table tr:nth-child(even){background-color:#184d47;color:#fff;}
15. /*pagination*/
16. .container_pagination{text-align:left;}
17. ul.pagination{list-style-type:none;}
18. ul.pagination li{display:inline;}
19. ul.pagination li a{margin:5px;padding:5px 10px;background-color:#726a95;color:#fff;text-decoration:none;}
20. span.active{margin:5px;padding:5px 10px;background-color:#62959c;color:#fff;}
21. </style>
22. </head>
23. <body>
24. <?php
25. /*get db connection*/
26. $koneksi=mysqli_connect("localhost","root","","sample") or die('tak dapat mengakses database'); /*urutan : host/user/password/nama_database*/
27.
28. /*init for pagination*/
29. $page=isset($_GET['page']) ? htmlspecialchars($_GET['page']) : 1;
30. $cari_semua=mysqli_query($koneksi,"select * from data_mahasiswa order by id_mahasiswa asc");
31. $jml_data=mysqli_num_rows($cari_semua);
32. $batas=5;
33. $jmlpage=ceil($jml_data/$batas);
34. if($page>$jmlpage) {$page=$jmlpage;}
35. if($page<1) {$page=1;}
36. $posisi=($page-1) * $batas ;
37.
38. /*view data*/
39. if($jml_data>0){
40. echo "<table class='container_table'>";
41. echo "<tr><th>NIM</th><th>Nama</th><th>Jenis Kelamin</th></tr>";
42. $cari_sebagian=mysqli_query($koneksi,"select * from data_mahasiswa order by id_mahasiswa asc limit $posisi, $batas");
43. while($data=mysqli_fetch_array($cari_sebagian)){
44. echo "<tr><td>".$data['NIM']."</td><td>".$data['nama']."</td><td>".$data['jenis_kelamin']."</td></tr>";
45. }
46. echo "</table>";
47. }
48.
49. /*pagination*/
50. $sebelumnya = $page - 1;
51. $berikutnya = $page + 1;
52. echo "<div class='container_pagination'>";
53. echo "<ul class='pagination'>";
54. if($page > 2){
55. $back=$page-1;
56. echo "<li><a title='prev' href='".$_SERVER['PHP_SELF']."?page=$back'>back</a></li>";
57. }
58. if($page==1){
59. for($i=$page-1; $i<=$page+3; $i++){
60. if($i<1){continue;}
61. if($i>$jmlpage){break;}
62. if($i == $page){
63. echo "<li><span title='$i' class='active'>$i</span></li>";
64. }else{
65. echo "<li><a title='$i' href='".$_SERVER['PHP_SELF']."?page=$i'>$i</a></li>";
66. }
67. }
68. }else if($page==$jmlpage){
69. for($i=$page-3; $i<=$page; $i++){
70. if($i<1){continue;}
71. if($i>$jmlpage){break;}
72. if($i == $page){
73. echo "<li><span title='$i' class='active'>$i</span></li>";
74. }else{
75. echo "<li><a title='$i' href='".$_SERVER['PHP_SELF']."?page=$i'>$i</a></li>";
76. }
77. }
78. }else if($page==$jmlpage-1){
79. for($i=$page-2; $i<=$page+1; $i++){
80. if($i<1){continue;}
81. if($i>$jmlpage){break;}
82. if($i == $page){
83. echo "<li><span title='$i' class='active'>$i</span></li>";
84. }else{
85. echo "<li><a title='$i' href='".$_SERVER['PHP_SELF']."?page=$i'>$i</a></li>";
86. }
87. }
88. }else{
89. for($i=$page-1; $i<=$page+2; $i++){
90. if($i<1){continue;}
91. if($i>$jmlpage){break;}
92. if($i == $page){
93. echo "<li><span title='$i' class='active'>$i</span></li>";
94. }else{
95. echo "<li><a title='$i' href='".$_SERVER['PHP_SELF']."?page=$i'>$i</a></li>";
96. }
97. }
98. }
99. if($page < $jmlpage-1){
100. $next=$page+1;
101. echo "<li><a title='next' href='".$_SERVER['PHP_SELF']."?page=$next'>next</span></a></li>";
102. }
103. echo "</ul>";
104. echo "</div>";
105. ?>
106. </body>
107. </html>
108.
Tampilan saat data pada halaman pertama :
Tampilan saat data pada halaman ke-3 :
Penjelasan :
Untuk menghubungkan server dengan database diperlukan koneksi ke mysql dengan 'mysqli_connect'. Beberapa parameter perlu disertakan, seperti nama host, user, password dan nama database (baris ke-26).
Untuk menampilkan data, perlu disaring terlebih dahulu. Jika datanya ada maka data dapat ditampilkan jika tak ada maka tidak ditampilkan (baris ke-39). Cara menampilkan data via mysql diberikan pembatasan dengan limit $posisi, $batas (baris ke-42). Pembatasan cara menampilkan ini bertumpu pada halaman yang saat ini aktif dengan metode $_GET['page'].
Data kemudian diolah oleh beberapa perhitungan manual via PHP, seperti $jmlpage untuk mendapatkan jumlah total halaman, $posisi untuk mendapatkan titik awal data yang harus ditampilkan.
Untuk tampilan pagination-nya sendiri menggunakan daftar list (<ul>) yang ditampilkan secara inline. Baris ke-54 sampai baris ke-102 merupakan rangkaian kode pagination yang sudah ditata untuk mengatur halaman sebelum dan sesudahnya dan juga halaman yang sedang aktif. Saat pengguna mengklik halaman tertentu maka halaman lain akan terpengaruh dan berubah tampilannya.
Demikian tutorial kali ini, semoga bermanfaat. Dan jika anda ingin mendownload kode script-nya, silahkan di sini. File dalam bentuk .zip file berisi file php dan juga .sql file.
0
87
Halaman Terkait
![]() | Membuat Menu Dropdown Sederhana Dengan CSS artikel |
Belum terdaftar? silahkan Daftar disini.
Mengirim Komentar
Setiap pengunjung situs ini dapat memposting komentar disini, namun tidak semua komentar dapat ditampilkan. Gunakan kalimat baku bahasa Indonesia yang mudah dimengerti. Dilarang memposting kalimat yang berisi ujaran kebencian, SARA, pornografi, perjudian dan spam. Komentar harus sesuai dengan topik. Untuk bahasan lainnya yang lebih mendalam dapat menggunakan sarana forum. Anda dapat mengirimkan suatu pertanyaan dan member lainnya akan menjawab pertanyaan Anda.Paling Banyak Dibaca
Tags
News Letters
Silahkan masukkan email Anda untuk berlangganan informasi kami
Polling
Belum terdaftar? silahkan Daftar disini.
Peringatan!
Apakah ingin menghapus komentar ini?