Tentu, ini artikel tentang cara membuat pagination di CodeIgniter.
Pagination adalah fitur penting untuk mengelola tampilan data dalam jumlah besar pada sebuah website. Dengan pagination, data dibagi ke dalam beberapa halaman, sehingga website tidak perlu memuat semua data sekaligus dan performanya tetap optimal. Framework CodeIgniter menyediakan library bawaan yang mempermudah proses ini.
Langkah 1: Persiapan Awal
Pastikan Anda memiliki hal-hal berikut:
- Proyek CodeIgniter yang sudah terinstal dan berjalan.
- Koneksi database yang sudah dikonfigurasi.
- Sebuah tabel dengan banyak data. Contohnya, kita akan menggunakan tabel
mahasiswa.
Langkah 2: Konfigurasi dan Pemanggilan Library Pagination
CodeIgniter memiliki library pagination yang perlu dimuat dan dikonfigurasi. Anda bisa memuatnya di konstruktor controller atau langsung di method yang memerlukan pagination.
// di dalam controller
$this->load->library('pagination');
// Array konfigurasi untuk pagination
$config['base_url'] = base_url('mahasiswa/index');
$config['total_rows'] = 200; // Contoh: total 200 data
$config['per_page'] = 10; // Jumlah data per halaman
Beberapa opsi konfigurasi penting:
$config['base_url']: URL dasar untuk link pagination Anda.$config['total_rows']: Total data yang ada di tabel.$config['per_page']: Jumlah data yang ingin Anda tampilkan di setiap halaman.
Langkah 3: Mengambil Data dari Database
Untuk menampilkan data per halaman, Anda perlu menambahkan limit dan offset pada query database Anda. limit adalah jumlah data per halaman (per_page), dan offset adalah posisi awal data yang akan diambil.
Anggaplah kita punya sebuah Model (M_mahasiswa) dengan fungsi untuk mengambil data.
application/models/M_mahasiswa.php
<?php
class M_mahasiswa extends CI_Model{
function get_mahasiswa($limit, $start){
$this->db->limit($limit, $start);
$query = $this->db->get('mahasiswa');
return $query->result();
}
}
Langkah 4: Menggabungkan di Controller
Sekarang, kita gabungkan semua logika di dalam controller. Kita akan membuat controller Mahasiswa.
application/controllers/Mahasiswa.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Mahasiswa extends CI_Controller {
public function __construct(){
parent::__construct();
$this->load->model('m_mahasiswa');
$this->load->library('pagination');
$this->load->helper('url');
}
public function index($start = 0){
// Menghitung total data
$total_rows = $this->db->get('mahasiswa')->num_rows();
// Konfigurasi Pagination
$config['base_url'] = base_url('mahasiswa/index');
$config['total_rows'] = $total_rows;
$config['per_page'] = 10;
$config['uri_segment'] = 3;
// Inisialisasi Pagination
$this->pagination->initialize($config);
// Mengambil data untuk halaman saat ini
$data['mahasiswa'] = $this->m_mahasiswa->get_mahasiswa($config['per_page'], $start);
$data['pagination_links'] = $this->pagination->create_links();
// Memuat view dan mengirim data
$this->load->view('v_mahasiswa', $data);
}
}
$start: Parameter ini akan berisi nilai offset dari URL (segmen ke-3).$this->db->get('mahasiswa')->num_rows(): Cara sederhana untuk mendapatkan total baris data.$data['pagination_links']: Berisi kode HTML untuk link pagination yang dihasilkan oleh library.
Langkah 5: Menampilkan di View
Terakhir, kita tampilkan data dan link pagination di view.
application/views/v_mahasiswa.php
<!DOCTYPE html>
<html>
<head>
<title>Daftar Mahasiswa</title>
</head>
<body>
<center><h3>Daftar Mahasiswa</h3></center>
<table border="1" style="width: 80%; margin: auto;">
<thead>
<tr>
<th>No</th>
<th>Nama</th>
<th>NIM</th>
</tr>
</thead>
<tbody>
<?php foreach($mahasiswa as $m) { ?>
<tr>
<td><?php echo $m->id; ?></td>
<td><?php echo $m->nama; ?></td>
<td><?php echo $m->nim; ?></td>
</tr>
<?php } ?>
</tbody>
</table>
<center>
<div class="pagination">
<?php echo $pagination_links; ?>
</div>
</center>
</body>
</html>
Kesimpulan
Membuat pagination di CodeIgniter sangatlah mudah berkat library bawaan yang powerful. Anda hanya perlu mengkonfigurasi beberapa parameter dan library akan menangani sisanya, termasuk menghasilkan link HTML yang dinamis. Dengan begitu, website Anda akan lebih efisien dan ramah pengguna, terutama saat mengelola data dalam jumlah besar.
Apakah Anda ingin melihat contoh tampilan kustom untuk pagination atau membuat fitur pencarian dengan pagination?