Hatırlarsanız önceki derslerimizde PHP ve PDO kullanarak sayfalama yapmıştık. (İçeriğe gitmek için tıklayın). Bu dersimizde Codeigniter framework ile nasıl sayfalama işlemi yapılacağını göreceğiz. Framework içerisindeki "Pagination" sınıfı ile sayfalama yapmak oldukça basit. Hemen kod yazmaya başlayalım .
İlk olarak bir tane controller oluşturalım biz controller ismini "veriler" olarak belirledik siz istediğiniz isimde oluşturabilirsiniz . Şimdi bir tanede model oluşturalım veritabanı işlemlerimizi model'de halledelim. Örnekte "Veriler_model" olarak oluşturacağız modeli. Ve son olarak bir tanede view oluşturalım veritabanından çektiğimiz verileri burada gösterelim. Örnekte "veriler_view" olarak oluşturduk.
Şimdi ilk olarak oluşturduğumuz Veriler controllerini açalım.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Veriler extends CI_Controller {
public function __construct()
{
parent::__construct();
}
public function index()
{
$this->load->library("pagination"); // Sayfalama kütüphanesini sayfaya yükle
$this->load->model("Veriler_model"); // Oluşturduğumuz Veriler_model.php sayfamıza yüklüyoruz
$this->load->helper("url"); // Url helperini sayfamıza yüklüyoruz
$config['uri_segment'] = 3;
$config['per_page'] =2; // Her sayfada kaç tane gözükecek
$config['total_rows'] =$this->Veriler_model->toplam_kayit(); // Toplam kaç tane kayıt var
$config['base_url'] = site_url()."veriler/index"; // Sayfalamanın yapılacağı url
$config['use_page_numbers'] = TRUE; // Sayfa numaralarını kullan
$this->pagination->initialize($config); // Ayarları kaydet
$data["linkler"] = $this->pagination->create_links(); // Html çıktsını değişkene depola
$sayfa = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0; // Sayfa numarası url de 3.kısımda yazacağı için üçüncü kısmı alıyoruz eğer boşsa 0 olarak belirliyoruz
if($sayfa > 0) // Eğer sayfa 0 dan büyükse
{
$offset = ($sayfa*$config['per_page']) - $config['per_page']; // Offset değerimizi bu işlemler ile buluyoruz
}else
{
$offset = $sayfa; // Eğer Sayfa 0 dan küçükse veya eşitse direk sayfa değişkeninin değerini al
}
$data["veriler"] = $this->Veriler_model->listele($config['per_page'], $offset); // Modelimiz içerisinde oluşturduğumuz listele metoduna kaç tane veri gösterileceğini ve kaçıncı veriden başlıyacağını yazıyoruz.
$this->load->view("veriler_view",$data); // Data değişkenini view'e aktarıyoruz
}
}
Diğer kısımlara geçmeden önce en basit haliyle sayfalama bu şekilde diğer ek ayarlara Codeigniter'ın kendi sitesinden bakabilirsiniz. (Gitmek için tıklayın). Son olarak sabit kalacak ayarlarınızı "application/config" içerisine "pagination.php" adında bir dosya oluşturarak saklayabilirsiniz. Bu şekilde bir kullanım ile sürekli ayaları tekrar tekrar yazmak zorunda kalmazsınız . Şimdi "Veriler_model" dosyamızı açalım. İçerisine 2tane metod ekleyeceğiz.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Veriler_model extends CI_Model {
public function __construct()
{
parent::__construct();
}
public function toplam_kayit()
{
return $this->db->count_all_results("veriler"); // Veriler adlı tablodaki kayıt sayısını döndür
}
public function listele($limit, $start)
{
$this->db->limit($limit, $start); // Metoda gelen parametreler ile limit değerlerini gir ve sayfalamaya göre veri getir
$veriler = $this->db->get("veriler"); // Veriler tablosunu çek
return $veriler->result(); // Sonuçları döndür
}
}
Şimdi son olarak "veriler_view" dosyamızı açalım ve view'e değerlerimizi yazdıralım.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Webderslerim.com</title>
</head>
<body>
<?php
foreach ($veriler as $row) { // Veriler değişkeninden gelen tüm kayıtları listele
?>
<h1><?php echo $row->baslik;?></h1>
<p><?php echo $row->icerik;?></p>
<?php
}
?>
<?php echo $linkler; // Sayfalama kütüphanesinin verdiği çıktıyı yaz sayfaları oluştur.?>
</body>
</html>
Önceden de belirttiğimiz gibi en basit haliyle sayfalama işlemi bu şekilde daha fazla özelleştirme ayarlamaları için Codeigniter'ın resmi sitesine bakabilirsiniz.
Kolay gelsin
Yorum yapmak için lütfen giriş yapın veya üye olun