Pagination di PHP MySQL: Cara Membagi Data dalam Halaman dengan Efisien

By | 25 October 2025

Dalam dunia pengembangan web, menampilkan semua data dalam satu halaman bukanlah pilihan yang efisien — terutama jika data mencapai ratusan atau ribuan baris. Di sinilah pagination di PHP MySQL berperan penting. Pagination membantu membagi data ke dalam beberapa halaman agar lebih ringan, cepat, dan mudah dibaca oleh pengguna.

Pagination tidak hanya meningkatkan pengalaman pengguna (UX), tetapi juga berdampak pada kinerja server dan optimasi SEO. Dengan pagination, browser tidak perlu memuat seluruh dataset sekaligus, melainkan hanya sebagian data berdasarkan halaman yang sedang diakses.

Konsep Dasar Pagination

Pagination bekerja dengan prinsip limit dan offset di SQL.

  • LIMIT menentukan jumlah data yang ingin ditampilkan per halaman.

  • OFFSET menentukan posisi awal data yang akan diambil dari tabel.

Contohnya:

SELECT * FROM produk LIMIT 10 OFFSET 20;

Artinya, ambil 10 data mulai dari data ke-21 (karena offset dimulai dari 0).

Struktur Tabel dan Koneksi Database

Misalkan kita punya tabel bernama produk seperti berikut:

CREATE TABLE produk (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nama_produk VARCHAR(100),
  harga INT,
  stok INT
);

Lalu buat koneksi database sederhana:

<?php
$koneksi = new mysqli("localhost", "root", "", "db_toko");
if ($koneksi->connect_error) {
    die("Koneksi gagal: " . $koneksi->connect_error);
}
?>

Script Pagination di PHP MySQL

Berikut contoh lengkap script pagination menggunakan MySQLi:

<?php
include 'koneksi.php';

// Jumlah data per halaman
$limit = 5;

// Cek halaman aktif
$halaman = isset($_GET['halaman']) ? (int)$_GET['halaman'] : 1;
$offset = ($halaman - 1) * $limit;

// Hitung total data
$result = $koneksi->query("SELECT COUNT(*) AS total FROM produk");
$row = $result->fetch_assoc();
$total_data = $row['total'];
$total_halaman = ceil($total_data / $limit);

// Ambil data sesuai halaman
$query = $koneksi->query("SELECT * FROM produk LIMIT $limit OFFSET $offset");
?>

<!DOCTYPE html>
<html lang="id">
<head>
  <meta charset="UTF-8">
  <title>Pagination di PHP MySQL</title>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css">
</head>
<body class="p-4">
  <div class="container">
    <h2 class="mb-3">Daftar Produk</h2>

    <table class="table table-bordered">
      <thead class="table-dark">
        <tr>
          <th>ID</th>
          <th>Nama Produk</th>
          <th>Harga</th>
          <th>Stok</th>
        </tr>
      </thead>
      <tbody>
        <?php while ($data = $query->fetch_assoc()) : ?>
          <tr>
            <td><?= $data['id']; ?></td>
            <td><?= $data['nama_produk']; ?></td>
            <td>Rp<?= number_format($data['harga']); ?></td>
            <td><?= $data['stok']; ?></td>
          </tr>
        <?php endwhile; ?>
      </tbody>
    </table>

    <!-- Navigasi Pagination -->
    <nav>
      <ul class="pagination">
        <?php for ($i = 1; $i <= $total_halaman; $i++) : ?>
          <li class="page-item <?= ($i == $halaman) ? 'active' : ''; ?>">
            <a class="page-link" href="?halaman=<?= $i; ?>"><?= $i; ?></a>
          </li>
        <?php endfor; ?>
      </ul>
    </nav>
  </div>
</body>
</html>

Penjelasan Script

  • $limit = jumlah data per halaman.

  • $halaman = halaman aktif (didapat dari URL ?halaman=).

  • $offset = posisi data awal untuk query berdasarkan halaman.

  • $total_halaman = hasil pembagian total data dengan limit (dibulatkan ke atas).

  • Di bagian HTML, pagination dibuat dengan Bootstrap agar tampil menarik dan responsif.

Tips Optimasi Pagination

  1. Gunakan index pada kolom yang sering diurutkan — agar query lebih cepat.

  2. Gunakan AJAX untuk pagination tanpa reload (opsional).

  3. Tambahkan urutan (ORDER BY) agar data tampil konsisten.

  4. Gunakan parameter validasi agar tidak bisa injeksi halaman melalui URL.

Kesimpulan

Dengan menerapkan pagination di PHP MySQL, aplikasi web menjadi lebih cepat, efisien, dan ramah pengguna. Selain menghemat sumber daya server, pagination juga meningkatkan pengalaman pengguna saat menjelajahi data dalam jumlah besar.

Pagination adalah fondasi penting dalam pengelolaan data — terutama untuk aplikasi berbasis database seperti toko online, sistem admin, atau portal berita.

Category: PHP