Seiring bertambahnya data di aplikasi, menampilkan semua data sekaligus akan membuat halaman lambat dan sulit dibaca.
Solusinya adalah pagination (halaman data) dan filter / search, sehingga pengguna bisa:
- Melihat data per halaman
- Mencari data sesuai kriteria tertentu
- Menavigasi data dengan cepat
Pada BAB ini, kita akan membahas:
- Pagination di CodeIgniter
- Filter / pencarian data
- Integrasi dengan tabel HTML dan Bootstrap
Contents
Tujuan Pembelajaran
Setelah menyelesaikan BAB 13, Anda akan mampu:
- Membuat pagination untuk data besar
- Menampilkan data terbagi per halaman
- Membuat filter / pencarian data
- Menggabungkan pagination dan filter agar efisien
- Menampilkan tabel responsif dengan Bootstrap
13.1 Pagination Dasar
CodeIgniter memiliki library pagination untuk membagi data menjadi beberapa halaman.
13.1.1 CI 3 – Contoh Controller
class Mahasiswa extends CI_Controller {
public function index() {
$this->load->library('pagination');
$config['base_url'] = base_url('mahasiswa/index');
$config['total_rows'] = $this->db->count_all('mahasiswa');
$config['per_page'] = 5;
$config['full_tag_open'] = '<ul class="pagination">';
$config['full_tag_close'] = '</ul>';
$config['cur_tag_open'] = '<li class="page-item active"><a class="page-link">';
$config['cur_tag_close'] = '</a></li>';
$config['num_tag_open'] = '<li class="page-item">';
$config['num_tag_close'] = '</li>';
$this->pagination->initialize($config);
$page = $this->uri->segment(3, 0);
$data['mahasiswa'] = $this->db->get('mahasiswa', $config['per_page'], $page)->result();
$this->load->view('mahasiswa_list', $data);
}
}
13.1.2 View Pagination
<table class="table table-striped">
<!-- tabel data -->
</table>
<div>
<?= $this->pagination->create_links(); ?>
</div>
📌 Tips:
- Gunakan Bootstrap untuk styling pagination
per_pagebisa diubah sesuai kebutuhan
13.2 Filter / Pencarian Data
Filter memungkinkan pengguna mencari data berdasarkan kata kunci, misalnya nama mahasiswa.
Controller
public function search() {
$keyword = $this->input->get('keyword', TRUE);
$this->db->like('nama', $keyword);
$data['mahasiswa'] = $this->db->get('mahasiswa')->result();
$this->load->view('mahasiswa_list', $data);
}
Form Pencarian (View)
<form method="get" action="<?= base_url('mahasiswa/search') ?>" class="mb-3">
<input type="text" name="keyword" placeholder="Cari nama..." class="form-control" style="width:200px; display:inline-block;">
<button type="submit" class="btn btn-primary">Cari</button>
</form>
📌 Tips:
- Gunakan
like()untuk pencarian sebagian kata - Bisa menambahkan filter lain seperti jurusan atau NIM
13.3 Pagination + Filter Bersama
Kombinasi pagination dan filter membuat navigasi data lebih efisien.
Langkah-langkah:
- Tangkap keyword dari GET
- Hitung total data sesuai filter (
$this->db->like()->count_all_results()) - Tampilkan data terbatas per halaman
- Sertakan keyword di link pagination agar filter tetap aktif
13.4 Tabel Responsif dengan Bootstrap
Gunakan Bootstrap agar tabel tetap rapi di semua ukuran layar:
<div class="table-responsive">
<table class="table table-bordered table-striped">
<thead class="table-dark">
<tr>
<th>No</th>
<th>Nama</th>
<th>NIM</th>
<th>Jurusan</th>
</tr>
</thead>
<tbody>
<?php $no=1; foreach($mahasiswa as $m): ?>
<tr>
<td><?= $no++ ?></td>
<td><?= $m->nama ?></td>
<td><?= $m->nim ?></td>
<td><?= $m->jurusan ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
📌 Keunggulan:
- Tabel bisa digulir horizontal jika kolom banyak
- Kombinasi pagination + filter membuat aplikasi user-friendly
Penutup
Dengan BAB 13 ini, aplikasi CodeIgniter Anda sudah mampu:
- Menampilkan data besar dengan pagination
- Membuat filter pencarian data
- Menggabungkan pagination dan filter agar efisien
- Menampilkan tabel responsif dengan Bootstrap
Langkah berikutnya bisa fokus pada fitur lanjutan seperti export data, grafik, atau dashboard interaktif, agar aplikasi lebih lengkap dan profesional.