' codeigniter pagination limit function"> Codeigniter ile Veritabanı Kayıtlarını Sayfalama

Beyaz.Net İpucu

Codeigniter ile Veritabanı Kayıtlarını Sayfalama

Bu yazımda veri tabanından çekilen verileri codeigniter pagination sınıfını kullanarak sayfalanmasını anlatacağım.

İlk olarak MODEL kısmından başlayalım.

sayfalama_model.php adında yeni bir Model dosyası oluşturuyoruz. Model dosyamızda veri tabanından verileri çeken ve veri tabanındaki verilerin adetini bize veren 2 adet fonksiyonumuz olacak. Veri tabanımızda uyeler adında bir tablomuz ve bu tablomuzun id, baslik adında 2 tane sütunu bulunmaktadır.

Aşağıdaki kodlar model dosyamızı oluşturmaktadır.

<?php
class Sayfalama_model extends Model{
    function __construct()
    {
        parent::Model();
    }
    function uyeler($baslangic, $limit)
    {
        $sql = "SELECT * FROM yazilar ORDER BY id DESC LIMIT ?, ?";
        $query = $this->db->query( $sql, array((int)$baslangic, (int)$limit) );

        if( $query->num_rows() > 0 )
        {
            return $query->result_array();
        }
        else
        {
            return FALSE;
        }
    }
    function uyeler_adet()
    {
        $sql = "SELECT COUNT(*) as adet FROM uyeler";
        $query = $this->db->query($sql);

        return (int)$query->row()->adet;
    }
}

Yukarıdaki model kodumuzda üyeleri çeken sorgumuzu bind query ile yaptık böylece otomotik olarak escape işlemi yaptık ayrıca parametre olarak gelen $baslangic ve $limit int tipine dönüştürerek urlde string olması durumuna karşılık önlemimizi almış olduk.

Şimdi CONTROLLER kısmına geçelim.

sayfalama.php adında yeni bir controller oluşturuyoruz. Controller dosyasında yapılacaklar :

  • Controller dosyamızda veri tabanındaki kayıtları url den gelen numaraya göre çekeceğiz.
  • Veri tabanındaki kayıtları her sayfada 3 adet kayıt olacak şekilde sayfalandıracağız.

Controller dosyamızın içeriği :

<?php
class Sayfalama extends Controller{
    function __construct()
    {
        parent::Controller();
    }
    function index()
    {
        $this->load->Model('sayfalama_model', 'Model'); 

        $data['sayfalama_linkleri'] = $this->sayfalama_linkleri($this->Model->uyeler_adet());
        $data['uyeler'] = $this->Model->uyeler($this->uri->segment(3,0),5);

        $this->load->view('sayfalama_view', $data);
    }
    function sayfalama_linkleri($toplam)
    {
        $this->load->library('pagination');
        $config = array(
            'base_url'          => site_url('sayfalama/index'),
            'total_rows'        => $toplam,
            'per_page'          => 3,
            'num_links'         => 2,
            'page_query_string' => FALSE,
            'uri_segment'       => 3,
            'full_tag_open'     => '<div class="pagination">',
            'full_tag_close'    => '</div>',
            'first_link'        => 'İlk Sayfa',
            'first_tag_open'    => '',
            'first_tag_close'   => '',
            'last_link'         => 'Son Sayfa',
            'last_tag_open'     => '',
            'last_tag_close'    => '',
            'next_link'         => 'Sonraki',
            'next_tag_open'     => '',
            'next_tag_close'    => '',
            'prev_link'         => 'Önceki',
            'prev_tag_open'     => '',
            'prev_tag_close'    => '',
            'cur_tag_open'      => '<span class="current">',
            'cur_tag_close'     => '</span>',
            'num_tag_open'      => '',
            'num_tag_close'     => ''
        );
        $this->pagination->initialize($config);
        return $this->pagination->create_links();
    }

VİEW dosyamıza geçelim.

Kayıtları ve sayfalama linklerini view dosyamızda yazdıracağız. sayfalama_view.php adında yeni bir view dosyası oluşturun ve aşağıdaki kodları view dosyasına ekleyin.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <style type="text/css">
        a{color:#21759B;text-decoration:none;}

        #table th{background:#eee;padding:5px;text-align:left; vertical-align: top; }
        #table td{padding:5px; border-bottom: 1px solid #c3c3c3; vertical-align: top; }
        #table{ -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; width:500px; border:1px solid #c3c3c3;}
        #table tr:hover{ background: #bed9ee;}

        .pagination{margin-top:20px;}
        .pagination a, .pagination span{background: #fff;padding:5px;margin:2px;border:1px solid #d9d9d9;font-weight: bold;text-decoration:none;-moz-border-radius:3px;-webkit-border-radius: 3px;}
    </style>
  </head>
  <body>
      <?php if( $uyeler ) : ?>

            <table id="table">
                <tr>
                    <th>ID</th>
                    <th>Başlık</th>
                </tr>
                <?php foreach( $uyeler as $dizi ) : ?>
                    <tr>
                        <td style="width: 10%;"><?php echo $dizi['id']; ?></td>
                        <td><a href="#"><?php echo $dizi['baslik']; ?></a></td>
                    </tr>
                <?php endforeach;  ?>
           </table>
            <?php echo $sayfalama_linkleri; ?>
    <?php endif; ?>
  </body>
</html>

Kategorideki Güncel Makaleler