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?
1. <?php
2. class admin extends Controller {
3.
4. function admin()
5. {
6. parent::Controller();
7. $this->load->model('admin_model');
8. }
9.
10. function artikel() {
11. $data=$this->admin_model->artikel();
12. $this->load->view('mypaging',$data);
13. }
14. }
15. ?>
1. <?php
2. class admin_model extends Model{
3.
4. function admin_model(){
5. parent::Model();
6. }
7.
8. function artikel(){
9. $string_query = "select * from artikel order by artikelid";
10. $query = $this->db->query($string_query);
11. $config['base_url'] = base_url().'index.php/admin/artikel/';
12. $config['total_rows'] = $query->num_rows();
13. $config['per_page'] = '30';
14. $num = $config['per_page'];
15. $offset = $this->uri->segment(3);
16. $offset = ( ! is_numeric($offset) || $offset < 1) ? 0 : $offset;
17.
18. if(emptyempty($offset))
19. {
20. $offset=0;
21. }
22.
23. $this->pagination->initialize($config);
24.
25. $data['query'] = $this->db->query($string_query." limit $offset,
$num");
26. $data['base'] = $this->config->item('base_url');
27.
28. return $data;
29. }
30. }
31. ?>
1. <html>
2. <head>
3. <title>My Paging</title>
4. </head>
5. <body>
6. <table>
7. <thead>
8. <tr>
9. <th>Artikel ID</th>
10. <th>Judul</th>
11. <th>Date</th>
12. <th>Post by</th>
13. <th>View</th>
14. </tr>
15. </thead>
16. <tbody>
17. <?
18. foreach($query->result() as $row)
19. {
20. echo
21. "<tr>
22. <td>$row->artikelid</td>
23. <td>$row->title</td>
24. <td>$row->artikeldate</td>
25. <td>$row->postby</td>
26. <td>$row->view</td>
27. </tr>";
28. }
29. ?>
30. </tbody>
31. </table>
32. <p align="center"><?=$this->pagination->create_links();?></p>
33. </body>
34. </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?
1. function artikel() {
2. $data=$this->admin_model->artikel();
3. $this->load->view('mypaging',$data);
4. }
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?
1. $string_query = "select * from artikel order by artikelid";
2. $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();?>
Selamat mencoba !!
posted by : ade