Cara Membuat Pagination dengan PHP dan MYSQLI

Cara Membuat Pagination dengan PHP dan MYSQLI

Pada tutorial kali ini kita akan belajar cara membuat pagination dengan PHP dan MYSQLI. Pagination adalah fitur yang akan menampilkan data dengan rapi. Apabila terdapat banyak data yang harus ditampilkan maka pagination ini cocok untuk di terapkan, supaya data-data tersebut dapat di pisah dengan rapi.

BACA JUGA : CARA MEMBUAT CRUD DENGAN PHP DAN PDO MYSQL

Membuat Database dan Tabel di MYSQL

Langkah pertama mari kita membuat database terlebih dahulu, silahkan buka http://localhost/phpmyadmin/, kemudian klik create database. setelah itu silahkan jalankan query dibawah ini untuk membuat tabel nya.

CREATE TABLE IF NOT EXISTS `mahasiswa` (
  `id` int(11) NOT NULL,
  `nama` varchar(255) NOT NULL,
  `nim` int(11) NOT NULL,
  `jurusan` varchar(255) NOT NULL,
) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=utf8;

INSERT INTO `mahasiswa` (`id`, `nama`, `nim`, `jurusan`) VALUES
(1, 'Kevin Imron', 1209801, 'Teknik Informasi'),
(2, 'Rio Ubaillah', 1209802, 'Sistem Informasi'),
(3, 'Sean Glover', 1209803, 'Sistem Informasi'),
(4, 'Sigit Alvian', 1209804, 'Teknik Informasi'),
(5, 'Arifin Aldian', 1209805, 'Teknik Informasi'),
(6, 'Umi Ridayanti', 1209806, 'Informatika'),
(7, 'Desi Febriani', 1209807, 'Teknik Informasi'),
(8, 'Hanny Putri', 1209808, 'Informatika'),
(9, 'Vina Susanti', 1209809, 'Informatika'),
(10, 'Terri Myers', 1209810, 'Teknik Informasi'),
(11, 'Vicki Garner', 1209811, 'Sistem Informasi'),
(12, 'Pat Reeves', 1209812, 'Teknik Informasi'),
(13, 'Luz Freeman', 1209813, 'Informatika'),
(14, 'Tara Holland', 1209814, 'Teknik Informasi'),
(15, 'Edwin Adnan', 1209815, 'Teknik Informasi'),
(16, 'Nabila', 1209816, 'Teknik Informasi'),
(17, 'Nur Rheza', 1209817, 'Sistem Informasi'),
(18, 'Bayu Rikzan', 1209818, 'Sistem Informasi'),
(19, 'Ficky Roby', 1209819, 'Sistem Informasi'),
(20, 'Angga Pratama', 1209820, 'Sistem Informasi'),
(21, 'Sulton Akbar', 1209821, 'Sistem Informasi'),
(22, 'Sigit Wicaksono', 1209822, 'Teknik Informasi'),
(23, 'Adi Cahya', 1209823, 'Teknik Informasi'),
(24, 'Galang Izhar', 1209824, 'Informatika'),
(25, 'Anang Pratama', 1209825, 'Informatika'),
(26, 'Trio Prasetyo', 1209826, 'Teknik Informasi'),
(27, 'Regina Handayani', 1209827, 'Informatika'),
(28, 'Rangga Susanto', 1209828, 'Sistem Informasi'),
(29, 'Rudi Hermawan', 1209829, 'Informatika'),
(30, 'Dayat', 1209830, 'Informatika'),
(31, 'Hilman Adi', 1209831, 'Informatika'),
(32, 'Prasetyo Susanto', 1209832, 'Sistem Informasi'),
(33, 'Bambang Pramata', 1209833, 'Teknik Informasi'),
(34, 'Budi Angga', 1209834, 'Sistem Informasi'),
(35, 'Febrian Cahyo', 1209835, 'Sistem Informasi'),
(36, 'Cristin', 1209836, 'Informatika'),
(37, 'Anggi Maharani', 1209837, 'Informatika'),
(38, 'Imel Azizzah', 1209838, 'Teknik Informasi'),
(39, 'Andre Karl Meyer', 1209839, 'Sistem Informasi'),
(40, 'John Ramos', 1209840, 'Teknik Informasi'),
(41, 'Budi Lestanu', 1209841, 'Teknik Informasi'),
(42, 'Nathan Burgess', 1209842, 'Sistem Informasi'),
(43, 'Adrian Treo', 1209843, 'Sistem Informasi'),
(44, 'Toni Sucipto', 1209844, 'Teknik Informasi'),
(45, 'John', 1209845, 'Informatika'),
(46, 'Agil Ramos', 1209846, 'Informatika'),
(47, 'Rizky Jaya', 1209847, 'Teknik Informasi'),
(48, 'Rizal Agung', 1209848, 'Teknik Informasi'),
(49, 'Angga Ummam', 1209849, 'Teknik Informasi'),
(50, 'Agung Pratama', 1209850, 'Teknik Informasi'),;

ALTER TABLE `mahasiswa` ADD PRIMARY KEY (`id`);

ALTER TABLE `mahasiswa` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=42;

Membuat Pagination

Sekarang mari kita buat terlebih dahulu file pagination.php. Setelah kalian membuat filenya mari kita lakukan koneksi ke database yang sudah kita buat tadi.

<?php

$connect = mysqli_connect('localhost', 'root', '', 'php-pagination');

Kode diatas berfungsi untuk sebagai konkesi antara project yang kita buat dengan database. Kita menggunakan mysqli_connect untuk melakukan koneksi.

Selanjutnya di baris berikutnya mari kita buat berapa data yang ingin di tampilkan, disini saya milih 10 data, maka saya tampung ke variabel show_page. Kemudian pada kodingan selanjutnya yaitu yang untuk mengatur url. Dimana nantinya dibagian url terdapat nomor halaman yang dapat berganti sesuai halaman berapa yang di pilih.

$show_page = 10;
$page = isset($_GET['halaman']) && is_numeric($_GET['halaman']) ? $_GET['halaman'] : 1;
$pages = ($page>1) ? ($page * $show_page) - $show_page : 0;	

Selanjutnya kita akan menghitung jumlah data yang telah kita buat di tabel mahasiswa. kita menggunakan num_rows untuk menghitung jumlah datanya. kemudian dari jumlah data tadi kita bagi dengan data yang akan kita tampilkan per halamannya.

$mahasiswa = mysqli_query($connect,'SELECT * FROM mahasiswa')->num_rows;
$total_pages = ceil($mahasiswa / $show_page);

Kemudian kita akan menampilkan data mahasiswa yang akan di tampilkan per halaman tadi. jadi per halaman akan ditampilkan 10 data, karena kita tadi telah membuat batas penampilan datanya yaitu 10

$data_mahasiswa = mysqli_query($connect,"SELECT * FROM mahasiswa LIMIT $pages, $show_page");
$nomor = $pages+1;
?>

Langkah selanjutnya kita buat tampilan tabel nya. kemudian kita lakukan while untuk menampilkan masing-masing datanya

<!doctype html>
<html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" integrity="sha384-B0vP5xmATw1+K9KRQjQERJvTumQW0nPEzvF6L/Z6nronJ3oUOFUFpCjEUQouq2+l" crossorigin="anonymous">

    <title>PHP Pagination</title>
  </head>
  <body>
    <div class="container mt-4">
        <table class="table table-striped">
            <thead>
                <tr>
                <th scope="col">Nama</th>
                <th scope="col">Nim</th>
                <th scope="col">Jurusan</th>
                </tr>
            </thead>
            <tbody>
                <?php while($result = mysqli_fetch_assoc($data_mahasiswa)): ?>
				<tr>
					<td><?php echo $result['nama']; ?></td>
					<td><?php echo $result['nim']; ?></td>
					<td><?php echo $result['jurusan']; ?></td>
				</tr>
                <?php endwhile; ?>
        </table>

Setelah itu langkah selanjutnya kita buat tampilan untuk paginationnya.

 <nav aria-label="Page navigation example">
            <ul class="pagination">
                <li class="page-item">
                <?php if($page > 1): ?>
                <a class="page-link" href="?halaman=<?php echo $page-1 ?>" aria-label="Previous">
                    <span aria-hidden="true">&laquo;</span>
                </a>
                <?php endif; ?>
                </li>
                <?php 
				for($x=1;$x<=$total_pages;$x++){
					?> 
					<li class="page-item"><a class="page-link" href="?halaman=<?php echo $x ?>"><?php echo $x; ?></a></li>
					<?php
				}
				?>
                
                <li class="page-item">
                <?php if($page < $total_pages): ?>
                <a class="page-link" href="?halaman=<?php echo $page+1 ?>" aria-label="Next">
                    <span aria-hidden="true">&raquo;</span>
                </a>
                <?php endif; ?>
                </li>
            </ul>
        </nav>

Hasil Keseluruhan Kode

Berikut ini keseluruhan kode yang telah kita buat tadi. Kalian bisa langsung copy kode berikut ini.

<?php

$connect = mysqli_connect('localhost', 'root', '', 'php-pagination');

$show_page = 10;
$page = isset($_GET['halaman']) && is_numeric($_GET['halaman']) ? $_GET['halaman'] : 1;
$pages = ($page>1) ? ($page * $show_page) - $show_page : 0;	

$mahasiswa = mysqli_query($connect,'SELECT * FROM mahasiswa')->num_rows;
$total_pages = ceil($mahasiswa / $show_page);

$data_mahasiswa = mysqli_query($connect,"SELECT * FROM mahasiswa LIMIT $pages, $show_page");
$nomor = $pages+1;
				
?>


<!doctype html>
<html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" integrity="sha384-B0vP5xmATw1+K9KRQjQERJvTumQW0nPEzvF6L/Z6nronJ3oUOFUFpCjEUQouq2+l" crossorigin="anonymous">

    <title>PHP Pagination</title>
  </head>
  <body>
    <div class="container mt-4">
        <table class="table table-striped">
            <thead>
                <tr>
                <th scope="col">Nama</th>
                <th scope="col">Nim</th>
                <th scope="col">Jurusan</th>
                </tr>
            </thead>
            <tbody>
                <?php while($result = mysqli_fetch_assoc($data_mahasiswa)): ?>
				<tr>
					<td><?php echo $result['nama']; ?></td>
					<td><?php echo $result['nim']; ?></td>
					<td><?php echo $result['jurusan']; ?></td>
				</tr>
                <?php endwhile; ?>
        </table>

        <nav aria-label="Page navigation example">
            <ul class="pagination">
                <li class="page-item">
                <?php if($page > 1): ?>
                <a class="page-link" href="?halaman=<?php echo $page-1 ?>" aria-label="Previous">
                    <span aria-hidden="true">&laquo;</span>
                </a>
                <?php endif; ?>
                </li>
                <?php 
				for($x=1;$x<=$total_pages;$x++){
					?> 
					<li class="page-item"><a class="page-link" href="?halaman=<?php echo $x ?>"><?php echo $x; ?></a></li>
					<?php
				}
				?>
                
                <li class="page-item">
                <?php if($page < $total_pages): ?>
                <a class="page-link" href="?halaman=<?php echo $page+1 ?>" aria-label="Next">
                    <span aria-hidden="true">&raquo;</span>
                </a>
                <?php endif; ?>
                </li>
            </ul>
        </nav>
    </div>
 
    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-Piv4xVNRyMGpqkS2by6br4gNJ7DXjqk09RmUpJ8jgGtD7zP9yug3goQfGII0yAns" crossorigin="anonymous"></script>
  </body>
</html>

Sekian untuk tutorial Cara Membuat Pagination dengan PHP dan MYSQLI. Jika kalian mengalami kesulitan silahkan komentar dibawah ini.

2 thoughts on “Cara Membuat Pagination dengan PHP dan MYSQLI”

    1. Pertama, tambahkan pengecekan jika sedang melakukan pencarian seperti ini kak

      $search = isset($_GET['search']) ? mysqli_real_escape_string($connect, $_GET['search']) : '';
      $search_condition = !empty($search) ? "WHERE nama LIKE '%$search%' OR nim LIKE '%$search%' OR jurusan LIKE '%$search%'" : '';

      // menghitung jumlah baris data berdasarkan pencarian
      $mahasiswa = mysqli_query($connect, "SELECT * FROM mahasiswa $search_condition")->num_rows;
      $total_pages = ceil($mahasiswa / $show_page);

      // Mengambil data berdasarkan pencarian
      $data_mahasiswa = mysqli_query($connect, "SELECT * FROM mahasiswa $search_condition LIMIT $pages, $show_page");
      $nomor = $pages + 1;

      Terakhir, tinggal tambahkan form pencariannya kak

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top