Membuat Pagination di codeigniter dengan menggunakan database SQL Server - Faiz Mubarak

Latest

Iseng - iseng ngeBlog [Tempat berbagi tempat bercerita]

Friday, 6 September 2013

Membuat Pagination di codeigniter dengan menggunakan database SQL Server

Ketemu lagi sama saya :D heheheh… sebelumnya saya sudah membahas tentang Konfigurasi CodeIgniter 2.1.3 dengan SQL Server 2012. Nah sekarang saya ingin menjelaskan bagaimana kita membuat pagination di codeigniter dengan menggunakan database SQL Server.

Dikarenakan Query di SQL Server agak berbeda dengan MySql saya mendapat kendala bagaimana cara membuat pagination si Sql Server? Cari-cari dan terus mencari akhirnya saya menemukan caranya, dan saya mencoba untuk sharing pengalaman disini. Yuk kita langsung aja.

Kita asumsikan bahwa kita memiliki table dengan nama dokter dana memiliki field KdDokter.

Yuk kita membuat file di
controller dengan nama dokter.php
model dengan nama m_dokter.php
dan buat folder di view dengan nama dokter dan di dalam folder tersebut buat file dengan nama list.php


Di controller dokter kita isikan code



<?php
class Dokter extends CI_Controller
{
    function __construct()
    {
        parent::__construct();
        $this->load->model('m_dokter');//LOAD MODEL DOKTER
    }


    function index() {
        if($this->uri->segment(5) == TRUE)
        {
               $offset =  $this->uri->segment(5);
        }
        else
        {
                $offset = 1;
        }

        $list    = $this->dokter->list_data($offset);//MEMBUAT HALAMAN
        $jumlah = $this->dokter->jumlah_data();//BERAPA DATA SEMUANYA

        $config['base_url']         = base_url(). 'index.php/dokters/index/';
        $config['total_rows']       = $jumlah;
        $config['uri_segment']      = 3;//PARAMETER PAGING PADA URI KE 3
        $config['use_page_numbers'] = TRUE;
        $config['per_page']         = 10;//DATA PERHALAMAN 10
        $config['full_tag_open']    = '<div class="pagination">';
        $config['full_tag_close']   = '</div>';
        $this->pagination->initialize($config);
        if (count($list) > 0)
        {
                $data['result'] = $list;
        }
        else
        {
                $data['result'] = array();
        }
        $this->load->view('dokter/list',$data);//BUAT DAN PANGGIL FILE VIEW => LIST
    }
}
?>


Setelah itu di model m_dokter isikan code


<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class M_dokter extends CI_Model
{
    private $id  = 0;

    function __construct()
    {
        parent::__construct();
    }

    public function list_data($offset)
    {
        $perpage = 10;
        if($offset == 1){
            $first = 1;
            $last  = $perpage;
        }else{
            $first = ($offset - 1) * $perpage + 1;
            $last  = $first + ($perpage -1);
        }
        $sql = 'WITH CTE AS (SELECT  a.*,ROW_NUMBER() OVER (ORDER BY a.KdDokter DESC) as RowNumber FROM dokter a)
            SELECT * FROM CTE WHERE RowNumber BETWEEN '.$first.' AND '.$last.'';
        $query = $this->db->query($sql);
        return $query->result_array();
    }

    public function jumlah_data()
    {
        $this->db->select('count(KdDokter) as total');
        $this->db->from('dokter');
        return $this->db->get()->row()->total;
    }
}
?>


Nah sekarang tinggal kita ke view dokter/list.php yang telah kita buat
Buat seperti ini

<?php
if(count($result)>0){
?>
<table width="100%" border="1" cellspacing="0" cellpadding="0">
  <tr>
    <td>Kode Dokter</td>
  </tr>
<?php
    foreach ($fields as $key_field=>$val_field) {
?>
      <tr>
        <td><?=$val['KdDokter']?></td>
      </tr>
<?php
    }
?>

</table>
<?php
echo $this->pagination->create_links();//OTOMATIS MEMBUAT PAGINATION

?>

<?php
}
?>


Selesai deh. silahkan di coba yah :)

2 comments:

  1. This comment has been removed by the author.

    ReplyDelete
  2. wah mantap gan,
    kunjungi http://blog.microtrafh.com juga ya

    ReplyDelete