Sunday, May 23, 2010

Pagination pada CodeIgniter


Hai.. hai.. hai..
Pengen share ilmu ahh.. bosen share jalan-jalan mulu, hehe.. *tapi tenang nanti saya share info jalan-jalan lagi ^_^*

Yap.. barusan abis ngulak-ngulik buat paging di CodeIgniter *framework kesayangan, sebenernya baru belajar seh, dipaksa untuk menggunakan framework demi kelancaran, haha.. *
Sebenernya buaaanyak banget tutorial untuk buat paging kalo di search di mbah kesayangan kita, google.
Tapi gapapa lah ya.. biar sekalian mengingatkan juga, kali aja ada yang masih bingung kayak aq *sebelum bisa buat sendiri*

Dah ah.. jangan kebanyakan basa-basi, nanti yang ada malah busuk ^_^


Framework CodeIgniter ini memiliki konsep MVC yaitu model - view - controller. Jadi, peng-codingan yang dilakukan dipisah-pisahkan berdasarkan model, view dan controllernya. Kalo yang biasa coding dengan konsep OOP, pasti dah biasa banget pake pendekatan MVC ini.

Nah.. untuk membuat paging ini juga kita pisah-pisahkan codingannya berdasarkan MVC-nya. Sebenarnya saya biasa buat paging, tapi belum pernah yang dipisah-pisahkan, jadi semuanya disatukan (yang biasa saya buat).

Untuk Controllernya:

$this->load->library('pagination');
$config['base_url'] = base_url().'index.php/train/view_data'; // URL tempat anda ingin menampilkan fasilitas paging-nya
$jum = $this->training->get_count(); //mengambil jumlah row dari database
$config['total_rows'] = $jum->JUMLAH; 
$config['per_page'] = '100' ;  // jumlah data yang akan ditampilkasn di setiap page-nya
$config['first_link'] = 'Awal';
$config['last_link'] = 'Akhir';
$config['next_link'] = 'Selanjutnya';
$config['prev_link'] = 'Sebelumnya';
$this->pagination->initialize($config); 
$page = $this->uri->segment(3); //ngambil batas akhir row pada halaman sebelumnya
if(!$page):
$offset = 1;
else:
$offset = $page + 1; 
endif;
$data['result'] = $this->training->get_training($offset, $config['per_page']);
$data['total_page'] = $this->pagination->create_links();  //ini untuk nampilin pagingnya, bisa diinisialisasi disini, bisa juga langsung di viewnya
$this->load->view('train/all_training_view', $data);

Untuk Modelnya:

function get_training($page, $jum_per_page){
$end_row = $page + $jum_per_page - 1;
$sql = "SELECT * FROM (SELECT r.*, ROWNUM as row_number FROM ( SELECT * FROM T_TRAINING ) r WHERE ROWNUM <= ".$end_row.") WHERE ".$page." <= row_number";
$query = $this->db->query($sql);
return $query;
}

Untuk Viewnya:
untuk nampilin pagingnya, cukup tulis  echo $total_page; 

Selesai, jadilah paging yang mau dibuat. Gampang bukan.
Kalo masih bingung juga, coba baca-baca user guide CI-nya
CMIIW ^_^

1 komentar:

bocah_item | March 15, 2011 at 11:58 AM

nice tutor, terima kasih

mampir dulu -> Pertamina

Post a Comment