X
    Categories: Learn PHP Tutorials, Tips And Guides

Use Codeigniter Pagination in Your Projects

CodeIgniter application usually have at least one database. In an average project, the database produces a lot of queries that need to be presented. The problem is that the display of the results could be messy. This is where pagination in CodeIgniter comes to the rescue.

In this tutorial, I will demonstrate how to use this technique in your CodeIgniter projects. I will start with the Model, then Controller and finally with the View.

You might also likeHow To Host CodeIgniter PHP On Cloud Using SSH

The Model

The model for the demo application carries out two important tasks: It provides a count of the records in the Departments table, and retrieve the list of departments from the table.

The path of the model is models/departments.php. Here is the code for the model:

<?php

class Departments extends CI_Model

{

   public function __construct() {

       parent::__construct();

   }



   public function record_count() {

       return $this->db->count_all("Departments");

   }



   public function fetch_departments($limit, $start) {

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

       $query = $this->db->get("Departments");



       if ($query->num_rows() > 0) {

           foreach ($query->result() as $row) {

               $data[] = $row;

           }

           return $data;

       }

       return false;

   }

}




Here’s a short definition of the methods in the model:

record_count() returns the number of records;  `fetch_departments()`  method retrieves a list of all the records from the Departments table.

The Controller

The controller for the application is located in the default folder and is named welcome.php. This controlled calls a function `departmentdata()` that offers common configuration options for the pagination library. Here is the code for the Controller:

<?php

class Welcome extends CI_Controller

{

   public function __construct() {

       parent:: __construct();

       $this->load->helper("url");

       $this->load->model("Departments");

       $this->load->library("pagination");

   }

   public function departmentdata() {

       $config = array();

       $config["base_url"] = base_url() . "welcome/departmentdata";

       $config["total_rows"] = $this->Departments->record_count();

       $config["per_page"] = 5;

       $config["uri_segment"] = 3;

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

       $page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;

       $data["results"] = $this->Departments->

           fetch_departments($config["per_page"], $page);

       $data["links"] = $this->pagination->create_links();

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


You might also like: How To Pass Data From Controller To View In CodeIgniter

The View

The View of the application is located in the views/departmentdata.php. Here is the complete code for the View:

<body>

<div id="container">

   <div id="body">

       <?php

       foreach($results as $data) {

           echo $data->Departments . " - " . $data->Labs . "<br>";

       }

       ?>

       <p><?php echo $links; ?></p>

   </div>



</div>

</body>


The Application

The URl of the demo application is http://domainname/welcome/departmentdata

Here is how it would look. You could see that the large dataset is cleanly displayed.

Conclusion

Pagination in CodeIgniter is a great way of displaying a large number of database query results in a clean manner. I hope that this tutorial would help you implement this technique into your projects.

Owais Alam: is the WordPress Community Manager at Cloudways - A Managed WooCommerce Hosting Platform and a seasoned PHP developer. He loves to develop all sorts of websites on WordPress and is in love with WooCommerce in particular. You can email him at owais.alam@cloudways.com