Ramazan Belyurt

B.T. Öğretmeni
Bursa/Türkiye
ramazanbelyurt@gmail.com
www.ramazanbelyurt.name.tr


Codeigniter Pegination ile Sayfalama Yapımı

03.03.2016        Yazar:Ramazan BELYURT               Okunma:3563

Codeigniter hazırlanan bir web sitesinde sayfalama yapmak için Pagination sınıfı kullanılır. Bu sınıfı kullanarak kolaylıkla sayfalama yapılabilir. Peki sayfalama nedir? sayfalama; örneğin sitenizde makale bölümünüz var ve burada da elli makaleniz olduğunu düşünelim. Elli makalenin hepsini bir sayfada göstermek mantıksız olacaktır. İşte burada makaleleri sayısına göre bölerek ayrı sayfalar şeklinde gösteriyoruz. Bir sayfada kaç makale gösterileceğini Controller dosyasında belirliyoruz.

Şimdi codeigniter ile sayfalama yapmak için pagination sınıfını controller dosyamıza dahil etmemiz gerekiyor. Daha sonra Pagination sınıfına gerekli ayarları gönderiyoruz. Controller dosyamızı aşağıdaki gibi oluşturuyoruz. 

<?php defined('BASEPATH') OR exit('No direct script access allowed');
class Anasayfa extends CI_Controller 
{
	function __construct()
	{
		parent::__construct();
        $this->load->library('pagination'); //pagination sınıfını dahil ediyoruz.
    }
    function sayfalama()
	{
        $toplam=$this->model->toplammakale();	//Vertabanından Toplam makale sayısını alıyoruz.
		$config=array(

			'base_url'=>base_url()."anasayfa/makaleler,     //link yapısı
			'total_rows'         =>$toplam,
			'per_page'           =>7,           //Bir sayfada gösterilecek makale sayısı
			'num_links'         => 5,          //kaç tane sayfa numarası gösterilecek
			'page_query_string'  => FALSE,
			'uri_segment'        => 3          //sayfalama linki kaçıncı sırada.
                       );
	$config['full_tag_open'] = '<ul class="pagination">';
        $config['full_tag_close'] = '</ul>';
        $config['first_link'] = false;
        $config['last_link'] = false;
        $config['first_tag_open'] = '<li>';
        $config['first_tag_close'] = '</li>';
        $config['prev_link'] = '&laquo';
        $config['prev_tag_open'] = '<li class="prev">';  //buradaki ayarlar sayfalama linki 
        $config['prev_tag_close'] = '</li>';             //görünüm ayarları
        $config['next_link'] = '&raquo';
        $config['next_tag_open'] = '<li>';
        $config['next_tag_close'] = '</li>';
        $config['last_tag_open'] = '<li>';
        $config['last_tag_close'] = '</li>';
        $config['cur_tag_open'] = '<li class="active"><a href="#">';
        $config['cur_tag_close'] = '</a></li>';
        $config['num_tag_open'] = '<li>';
        $config['num_tag_close'] = '</li>';

	$this->pagination->initialize($config); //yukarıda belirlediğimiz ayarları
                                                //pagination sınıfına gönderiyoruz.
$data['makaleler']=$this->model->makaleler($config['per_page'],$this->uri->segment(3)); //veri tabanından belirlediğimiz ayarlara göre kayıtları çekiyoruz.
	$data["links"]=$this->pagination->create_links(); //sayfalama linklerini oluşturuyoruz.
       $this->load->view('index',$data); //index sayfasını yüklüyor ve linkleri gönderiyoruz.
    }
}

Veri tabanı işlemleri için model dosyasını oluşturarak gerekli functionları yazıyoruz.

<?php
class model extends CI_Model
{

	function __construct()
	{
		parent::__construct();
        $this->load->database();  /veritabanı sınıfı dahil ediliyor.
	}
    function toplammakale()  //makale sayısını alıyoruz.
    {
		$sql='select count(id) as toplam from kategori_makaleler where kategoriadi=?';
		$query=$this->db->query($sql,array($kategoriadi));
		$result=$query->result();
		return $result[0]->toplam;
    }
    function makaleler($limit,$start) //belirlenen sayfalama kurallarına göre makaleler çekiliyor.
	{
		$this->db->limit($limit, $start);
		$this->db->order_by("id", "desc");
		$cek=$this->db->get('kategori_makaleler');
		return $cek->result();
	}
}

Yukarıda controller ve model dosyaları ile sayfalama işlemini yapmış olduk. Şimdi yapmamız gereken view sayfasında linkleri yazdırmak olacak. Aşağıda index.php view dosyasının kodlarını görüyorsunuz.

<?php
foreach($makaleler as rows) //makaleleri döngü ile sayfamıza yazdırıyoruz.
{
   rows->icerik;
}
   echo $links;  //makale sayısı kadar sayfalama linki oluşturuluyor.
?>


Yorum Ekleyin




Faydalı Linkler