Some text some message..
Some text some message..
Some text some message..
Some text some message..
  • Beranda
  • »
  • Artikel
  • »
  • Cara Membuat Pagination Sederhana Dengan Database Mysql Pada PHP

Cara Membuat Pagination Sederhana Dengan Database Mysql Pada PHP

previous Previous Page

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.

Membuat Database Mysql

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

pagination sederhana

Kemudian langkah berikutnya adalah membuat tablenya. Table kali ini berisi data tentang mahasiswa meliputi id, NIM, nama mahasiswa dan jenis kelamin.

pagination sederhana

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');

Membuat Pagination

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.

pagination sederhana

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 :

pagination sederhana

Tampilan saat data pada halaman ke-3 :

pagination sederhana

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

Kategori : tag iconhtml - tag iconcss - tag iconphp - tag iconmysql

facebooktwittergoogle pluswhatapplinkedinpinterest

previous Previous Page

Tinggalkan Balasan

Nama Pengguna* :

Email* :

 

Formulir ini hanya bagi member yang sudah terdaftar. disini.

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.

News Letters

Silahkan masukkan email Anda untuk berlangganan informasi kami

Polling

1. Apakah website ini menambah pengetahuan Anda?
 Ya
 Tidak
 Tidak Tahu
2. Seberapa sering Anda mengunjungi website ini?
 Sering
 Jarang
 Tidak Pernah
3. Apakah penilaian Anda terhadap website ini, jika melihat dari segi konten/isi?
 Sangat Bagus
 Bagus
 Cukup Bagus
 Kurang Bagus
4. Apakah penilaian Anda terhadap website ini, jika melihat dari segi tampilan?
 Sangat Bagus
 Bagus
 Cukup Bagus
 Kurang Bagus
5. Untuk meningkatkan kualitas website ini, Apakah saran Anda?

 

Silahkan login terlebih dahulu untuk mengirimkan polling. disini.

Belum terdaftar? silahkan Daftar disini.