Labels

Tuesday, October 18, 2011

Membuat Paging di CodeIgniter

Mengapa kita perlu menggunakan paging pada sebuah applikasi web? Anda mungkin akan bertanya-tanya tentang hal itu. Paging adalah salah satu cara untuk melakukan optimasi query. Dalam sebuah kasus saya pernah mengerjakan project yang datanya dalam satu tabel itu sampai ratusan ribu record. Seandainya data tersebut di tampilkan pada sebuah halaman web saja, maka akan menghabiskan tempat. Dan akan terasa tidak enak untuk dilihat. Oleh karena itu digunakan paging untuk mengantisipasi hal itu.
CodeIgniter mempunyai class pagination untuk mengatasi hal tersebut dan penggunaannya pun juga sangat mudah. Untuk lebih jelasnya mari kita praktekkan saja.
Disini nanti kita akan buat sebuah controller dengan nama admin.php dan disimpan pada folder application/controllers. Masukkan code berikut ini kedalam file tersebut.
view plaincopy to clipboardprint?

<?php
class admin extends Controller {
 
    function admin()
    {
        parent::Controller();
        $this->load->model('admin_model');                
    }
     
    function artikel() {                            
        $data=$this->admin_model->artikel();
        $this->load->view('mypaging',$data);              
    }
}
?>

Kemudian buatlah file admin_model.php dan simpan ke dalam folder application/models kemudian masukkan code berikut ini :
view plaincopy to clipboardprint?

<?php
class admin_model extends Model{  
     
    function admin_model(){  
        parent::Model();
    }
     
    function artikel(){
        $string_query       = "select * from artikel order by artikelid";
        $query          = $this->db->query($string_query);            
        $config['base_url']     = base_url().'index.php/admin/artikel/';
        $config['total_rows']   = $query->num_rows();
        $config['per_page']     = '30';
        $num            = $config['per_page'];
        $offset         = $this->uri->segment(3);
        $offset         = ( ! is_numeric($offset) || $offset < 1) ? 0 : $offset;
         
        if(emptyempty($offset))
        {
            $offset=0;
        }
         
        $this->pagination->initialize($config);        
         
        $data['query']      = $this->db->query($string_query." limit $offset,$num");  
        $data['base']       = $this->config->item('base_url');
     
        return $data;
    }
}
?>

Kemudian buatlah file mypaging.php dan simpan kedalam folder application/views. Masukkan code berikut ini ke dalam file tersebut.
view plaincopy to clipboardprint?

<html>  
<head>  
<title>My Paging</title>  
</head>  
<body>
<table>
<thead>
    <tr>      
        <th>Artikel ID</th>                              
        <th>Judul</th>
        <th>Date</th>
        <th>Post by</th>                                
        <th>View</th>
    </tr>
</thead>
<tbody>
    <?    
    foreach($query->result() as $row)
    {                    
        echo  
        "<tr>          
            <td>$row->artikelid</td>
            <td>$row->title</td>
            <td>$row->artikeldate</td>                    
            <td>$row->postby</td>                                        
            <td>$row->view</td>
        </tr>";        
    }
    ?>        
</tbody>
</table>
<p align="center"><?=$this->pagination->create_links();?></p>
</body>
</html>

Tiga file sudah kita buat, selanjutnya akan saya jelaskan code-code pada masing-masing file tersebut. Di dalam controller admin.php tedapat constructor yang memanggil file admin_model.php. Dibawahnya lagi terdapat code berikut:
view plaincopy to clipboardprint?

function artikel() {                            
    $data=$this->admin_model->artikel();
    $this->load->view('mypaging',$data);              
}

Fungsi artikel ini akan memanggil fungsi artikel() yang ada pada admin_model dan menyimpan return valuenya ke dalam variable $data. Setelah itu fungsi ini akan memanggil file mypaging.php yang ada di folder views dengan memberikan parameter $data.
Di dalam admin_model.php sendiri terdapat fungsi artikel. Di dalam fungsi ini kita akan melakukan query untuk mengambil data di table artikel. Berikut ini scriptnya:
view plaincopy to clipboardprint?

$string_query   = "select * from artikel order by artikelid";
$query      = $this->db->query($string_query);

Kita juga akan melakukan konfigurasi untuk paging yang kita buat.
    $config['base_url'] = base_url().'index.php/admin/artikel/';
Script di atas digunakan untuk mengatur arah link dari paging yang kita buat.
    $config['total_rows'] = $query->num_rows();
Script di atas digunakan untuk mengetahui total record dari query yang kita jalankan.
    $config['per_page'] = '30';
Script di atas digunakan untuk mengatur jumlah baris yang akan di tampilkan dalam satu halaman.

Sekarang kita akan melihat script dalam file mypaging.php di folder view. Di situ terdapat script untuk menampilkan paging.
    <?=$this->pagination->create_links();?>
Script ini akan membuat paging secara otomatis

0 comments

Post a Comment