Microtrafh - Kali ini saya akan memberikan tutorial bagaimana cara membuat pagination di codeigniter. Bebeda dengan tutorial pada umumnya disini saya akan menerangkan tentang sistem pagination milik codeingiter dan juga saya akan menambahkan fitur pencarian yang digabungkan dengan sistem pagination pada codeingiter. Sebelumnya saya akan membuat pagination dari crud yang pernah saya bahas di tutorial sebelumnya. Jadi jika kalian ingin memahami tutorial ini kalian bisa baca dulu dan download source code Tutorial Cara Membuat CRUD di CodeIgniter. Oke kita mulai saja.
Tutorial ini saya akan memberikan pula solusi memberi pagination pada halaman yang menggunakan function index() karena kita tau bahwa index() pada controller codeigniter tidak bisa diberi parameter urisegement sebagai contoh http://example.com/index/php/controller/param_segment kalau dicoba pasti 404 not found, maka dari itu tutorial ini pun akan menjelaskan bagaimana caranya, karena beberapa teman saya kesulitan memasang pagination di halaman utama aplikasi mereka.
pertama kita buka routes.php pada folder application/config dan tambahkan script ini
$route['data_produk/(:num)'] = "data_produk";
fungsinya adalah untuk memperbolehkan segment apapun dimasukan setelah masuk ke index() controller data_produk dan akan dikembalikan ke data_produk tanpa di proses apapun. Dengan kata lain kamu dapat memasukan uri segment tapi tidak diarahkan kemanapun, soalnya segment setelah nama controller seharusnya nama function pada controller, kenapa kita butuh segmnet ini soalnya pada pagination nanti kita butuh segment ini untuk menentukan posisi page dari data.
Selanjutnya kita buka application/views/v_data_produk.php , disini kita akan menambahkan input pencarian dan komponen paginantion. sisipkan dekat input
<form action="<?php echo site_url('data_produk');?>" method='post'> <input type="text" name="pencarian"> <input type="submit" value="Cari"> </form>
dan juga di bawah table
<?php echo $pagination ?>
sehingga menjadi seperti ini, bila ada error abaikan saja dulu karena memang belum memasukan fungsi pagination di controller dan models
<html> <head> <title>CRUD CodeIgniter</title> </head> <style> th,td,table,thead,tbody,tr{ border:1px solid #000; } </style> <body> <table> <thead> <th>No</th> <th>Nama</th> <th>Harga</th> <th>Stok</th> <th>Kontrol</th> </thead> <tbody> <h2>CRUD CodeIgniter</h2> <a href="<?php echo site_url('data_produk/input');?>">Input</a> <form action="<?php echo site_url('data_produk');?>" method='post'> <input type="text" name="pencarian"> <input type="submit" value="Cari"> </form> <?php $no = 1; foreach($data_produk as $value) { ?> <tr> <td><?= $no;?></td> <td><?= $value->nama;?></td> <td><?= $value->harga;?></td> <td><?= $value->stok;?></td> <td><a href="<?= site_url("data_produk/edit")."?produk=".$value->id;?>">edit</a>|<a href="<?= site_url("data_produk/delete")."?produk=".$value->id;?>">delete</a> </td> </tr> <?php $no++; } ?> </tbody> </table> <?php echo $pagination ?> </body> </html>
sekarang kita akan membuat fungsi paginationnya, buka application/controllers/data_produk.php dan ubah script dari function index() menjadi seperti ini
public function index() { $this->load->helper('url'); $this->load->library('pagination');//1 $this->load->database();//memanggil pengaturan database dan mengaktifkannya $this->load->model('m_data_produk');//memanggil model m_data_produk $pencarian = $this->input->post('pencarian'); $offset = $this->uri->segment(2, 0); $total = 5; $result = $this->m_data_produk->list_data($pencarian,$offset,$total); $config['uri_segment'] = 2; $config['base_url'] = site_url('data_produk'); $config['per_page'] = $total; $config['total_rows'] = $result['total_rows']; $this->pagination->initialize($config); $data['pagination'] = $this->pagination->create_links(); $data['data_produk'] = $result['data']; $this->load->view('v_data_produk',$data); }$this->load->library('pagination'); digunakan untuk memanggil library pagination
$pencarian = $this->input->post('pencarian'); mengambil data yang di sumbit di pencarian, pada codeigniter jika kita tidak post apa-apa tapi memanggil fungsi ini maka dia akan bernilai false, ini digunakan untuk menggantikan fungsi isset di php
$total =5; adalah jumlah data yang ditampilkan per pagenya.
$offset = $this->uri->segment(2, 0); adalah mengambil nilai dari url kita contoh
http://localhost/CrudCodeigniter/index.php/data_produk/6,
index.php adalah segment 0 karena root folder atau induk aplikasi saya di CrudCodeIgniter jadi segment 0 dimulai dari index.php , data_produk segment 1 dan 6 adalah segment 2, karena kita butuh nilai 6 itu maka kita menggunakan segment 2, fungsi ini akan bernilai 0 jika segment yang kita cari tidak ada jadinya kita bisa menghindari error.
$result = $this->m_data_produk->list_data($pencarian,$offset,$total); digunakan memanggil model dengan parameter, ini akan kita ubah fungsinya nanti di bagian models.
$config['uri_segment'] = 2; ini sama dengan urisegment tadi cuma ini khusus generate paginationnya.
$config['base_url'] = site_url('data_produk'); digunakan untuk menentukan posisi page, coba saja tidak memakai script ini maka kalian akan di direct ke halaman utama kalian pada saat klik page 2,jadi berantakan deh :).
$config['per_page'] = $total; ini untuk mengatur jumlah data di pagination per page nya.
$config['total_rows'] = $result['total_rows']; digunakan untuk menentukan total data yg dihasilkan untuk pagination jadi pagination memprosesnya , contoh per page 10 data dan total datanya 100 maka otomatis nanti ada 10 page yang dihasilkan oleh library pagination
$this->pagination->initialize($config); memulai membuat pagination berdasarkan data-data yang sudah dimasukan di $config tadi.
$data['pagination'] = $this->pagination->create_links(); memasukan hasil pagination ke data
$data['data_produk'] = $result['data']; data aslinya di pindahkan dari $result
nah selanjutnya buka application/models/m_data_produk.php dan ubah pada function list_data() menjadi seperti ini
function list_data($pencarian,$offset,$total){ if ($pencarian){ $this->db->like('nama',$pencarian); } $result['total_rows'] = $this->db->count_all_results('data_barang'); if ($pencarian){ $this->db->like('nama',$pencarian); } $query = $this->db->get('data_barang',$total,$offset); $result['data'] = $query->result(); return $result; }
pada if ($pencarian){...} itu digunakan jika kita tidak mencari apa" maka tidak usah di filter datanya langsung ambil total semua data, jika ada pencarian maka cari berdasarkan nama yang mirip dengan pencarian.
$result['total_rows'] = $this->db->count_all_results('data_barang'); digunakan untuk menghitung total row dari data yang dicari.
$query = $this->db->get('data_barang',$total,$offset); $result['data'] = $query->result(); digunakan untuk mengambil data dari pencarian jika ada.
return $result; mengembalikan array ke controller dari $result
nah begitulah saya membuat pagination beserta pencarian, setelah ini mari kita coba, kamu juga dapat mendownload source codenya di bawah halaman ini. Semoga bermanfaat dan jangan lupa follow blog dan social media kami untuk menerima tutorial dan info rutin seputar dunia komputer.
Mari kita Coba
Keadaan pada saat data tidak melebihi batas per page maka pagination belum muncul.
melakukan pencarian
menambah data hingga melebihi batas per page yaitu 5, pagination muncul 2 page.
page kedua dari pagination, urisegment menunjukan posisi data
melakuk
hasil dari pencarian
Kalian bisa mendownload source code pagination dengan codeigniter disini.
Tutorial Selanjutnya - Membuat Email Verifikasi di CodeIgniter
Tutorial Selanjutnya - Membuat Email Verifikasi di CodeIgniter
Tag :
codeigniter,
tutorial