صفحه بندی (Pagination) در کدایگنایتر

صفحه بندی (Pagination) در کدایگنایتر

حتما تا حالا به این برخورد کرده اید که در پایین صفحات سایتهای بزرگ شماره بندی وجود دارد به طور مثال در سایت گوگل بعد از جستجو می بینید شماره هایی وجود دارد که با کلیک کردن بر روی آن به آن صفحه می روید .

مزایای این کار زیاد است که برخی از ان ها را مورد بررسی قرار می دهیم:

  1. بارگزاری سریع صفحات.
  2. کوتاه شدن صفحات
  3. و غیره

در این آموزش می پردازیم به ساختن صفحه در کد ایگنایتر.

مدل صفحه بندی (Pagination) در کدایگنایتر

ابتدا نیاز داریم به مدلی که کشورها را لیست کند م ومقدار خروجی آن را در نظر بگیرد.

 

models/countries.php

class Countries extends CI_Model
{
    public function __construct() {
        parent::__construct();
    }

    public function record_count() {
        return $this->db->count_all("Country");
    }

    public function fetch_countries($limit, $start) {
        $this->db->limit($limit, $start);
        $query = $this->db->get("Country");

        if ($query->num_rows() > 0) {
            foreach ($query->result() as $row) {
                $data[] = $row;
            }
            return $data;
        }
        return false;
   }
}

متد record_count() تعداد کشور ها را بر می گرداند

متد fetch_countries() لیست کشورها را بر میگرداند همانگونه که می بینید دارای در آرگومان است :

  • limit تعداد محدوده جهت تعداد سطرها
  • start نقطه شروع دریافت اطلاعات

همانگونه که می بینید با استفاده از دستور زیر ما با استفاده از اکتیو رکردها محدودیت را اعمال می کنیم.

 

$this->db->limit($limit, $start);

 

کنترلرصفحه بندی (Pagination) در کدایگنایتر

در گام بعدی نیاز داریم به تعریف کنترلر

 

controllers/welcome.php


<?php
class Welcome extends CI_Controller 
{
    public function __construct() {
        parent:: __construct();
        $this->load->helper("url");
        $this->load->model("Countries");
        $this->load->library("pagination");
    }

    public function example1() {
        $config = array();
        $config["base_url"] = base_url() . "welcome/example1";
        $config["total_rows"] = $this->Countries->record_count();
        $config["per_page"] = 20;
        $config["uri_segment"] = 3;

        $this->pagination->initialize($config);

        $page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
        $data["results"] = $this->Countries->
            fetch_countries($config["per_page"], $page);
        $data["links"] = $this->pagination->create_links();

        $this->load->view("example1", $data);
    }
}

 

پیشنهاد پیرو برای شما :   سیستم اعلام نمرات و وضعیت تحصیلی

متد example1 یک سری مقدار دهی های اولیه می کند برای بار گزاری کتابخانه صفحه بندی که در سازنده صدا زده شده است و در نهایت مقدار را به فایل نمایشی ارسال می کنیم.

 

ویو صفحه بندی (Pagination) در کدایگنایتر

views/welcome_message.php
<body>
<div id="container">
  

<h1>Countries</h1>
<div id="body">
<?php
foreach($results as $data) {
    echo $data->Name . " - " . $data->Continent . "<br>";
}
?>
<p><?php echo $links; ?></p>
</div>
<p class="footer">Page rendered in <strong>{elapsed_time}</strong> seconds</p>
</div>
</body>

ابتدا آرایه را در یک جدول ریخته و با تک کد زیر صفحه بندی را بار گزاری می نماییم.

<?php echo $links; ?>

 

صفحه بندی (Pagination) در کدایگنایتر