Codeigniter Sayfalama Yapımı
Bu Yazıda Codeigniter ile sayfalama sınıfının (Pagination Class) kullanımına bir örnek yapıcam. Veri tabanından listelenecek olan içerik çok fazlaysa malum sayfalama kullanıyoruz. :) mysql'e çok fazla yüklenmemek lazım ;). Evet şimdi gelelim yapılışına öncelikle alttaki kodu paging.php ismiyle libraries klasörünün içine atıyoruz.

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

class paging {

var $ci;

function __construct() {
$this->ci = & get_instance();
}

function listele($data) {
//Sayfalama
$this->ci->load->library('pagination');
$config['base_url'] = $data['url'];
$config['total_rows'] = $data['toplam'];
$config['per_page'] = $data['limit'];

$config['uri_segment'] = $data['url_segment'];
# SAYFALAMA CSS
$config['full_tag_open'] = '<ul id="sayfalama">';
$config['full_tag_close'] = '</ul>';

$config['first_link'] = 'İlk Sayfa';
$config['first_tag_open'] = '<li class="previous">';
$config['first_tag_close'] = '</li>';

$config['last_link'] = 'Son Sayfa';
$config['last_tag_open'] = '<li class="next">';
$config['last_tag_close'] = '</li>';

$config['next_link'] = 'Sonraki';
$config['next_tag_open'] = '<li class="next">';
$config['next_tag_close'] = '</li>';

$config['prev_link'] = 'Önceki';
$config['prev_tag_open'] = '<li class="previous">';
$config['prev_tag_close'] = '</li>';

$config['cur_tag_open'] = '<li class="active">';
$config['cur_tag_close'] = '</li>';

$config['num_tag_open'] = '<li>';
$config['num_tag_close'] = '</li>';

$this->ci->pagination->initialize($config);
$return['page'] = $this->ci->pagination->create_links();
/* LİMİT */
if ($this->ci->uri->segment($data['url_segment'])) {
$segment = $this->ci->uri->segment($data['url_segment']);
} else {
$segment = 0;
}

$return['limit'] = array($config['per_page'] => $segment);

return $return;
}

}

Bu dosyayı oluşturduktan sonra sayfalama kullanılacak olan sayfaya çağırılmış olan bir css dosyasının içine alttaki kodları yapıştıralım:

#sayfalama {
padding: 30px;
}
#sayfalama li{
display: inline;
border:0 none;
font-size:11px;
list-style-image:none;
list-style-position:outside;
list-style-type:none;
margin:0;
padding:0;

}
#sayfalama a{
border:1px solid #CCC;
margin-right:2px;
}

#sayfalama .next a,
#sayfalama .previous a {
font-weight:bold;
padding:3px 6px;
}
#sayfalama .active{
margin-right:2px;
background:#09F ;
color:#FFF;
font-weight:bold;
display:block;
float:left;
padding:4px 6px;
}
#sayfalama a:link,
#sayfalama a:visited {
color:#09c;
display:block;
float:left;
padding:3px 6px;
text-decoration:none;
}
#sayfalama a:hover{
border:solid 1px #000;
}

Şimdi sıra içeriği Yazdırma bölümüne geldi, alttaki kodları controller içinde kullanacaksınız:

$sayfa_config = array(
'url' => base_url() . 'index.php/blog/index/', /* Kullanılacak olan sayfanın Adresi */
'toplam' => $this->blog->toplam(), /* Toplam Kayıt Sayısı modelden içerik count ediliyor. */
'limit' => 30, /* Gösterilecek Kayıt Sayısı */
'url_segment' => 3 /* Limitin Başlama değerinin alınacağı url segmenti */
);
$this->load->library('paging'); /* Oluşturduğumuz Kütüphanemizi Yüklüyoruz*/
$paging = $this->paging->listele($sayfa_config); /* Ayarları Fonksiyona Gönderiyoruz*/
$data['sayfalama'] = $paging['page']; /* View Kısmında Ekrana Yazdırılacak bilgi (1-2-3-4 vb..)*/
$limit = $paging['limit'];
$data['blog'] = $this->blog->blog($limit); /* içeriği çekiyoruz.*/

Şimdi Sıra Model Kısmında :

Limitli Kayıtları Çekiyoruz.

function blog($limit) {
$this->db->select('*');
$this->db->from('blog');
$this->db->where('durum', '1');
$this->db->order_by('id', 'desc');
foreach ($limit AS $a => $b) {

$this->db->limit($a, $b);
}
return $this->db->get()->result(0);
}

Toplam Kayıt Sayısını Çekiyoruz.

function toplam() {
$this->db->from('blog');
$this->db->where('durum', '1');
$query = $this->db->count_all_results();
return $query;
}

Evet Güzel bir sayfalama yapmak bu kadar basit :)

Okunma Sayısı : 191

Yorumlar


Hiç Yorum Yapılmamış. İlk Yorumu Siz Yapın.

Twitter Günlüğü