In this tutorial will learn how to create “Pagination in CodeIgniter”. In this tutorial, we used the CodeIgniter pagination class by initializing pagination library.
I am assuming you have already basic experience of working with the CodeIgniter framework before. Also, I will be sharing only partial code snippet related to pagination functionality.
Initializing pagination library and model.
public function __construct()
{
parent::__construct();
$this->load->model('Product_Model',"product_model");
$this->load->library('pagination');
}
Rotes in CodeIgniter.
$route['ProductList'] = 'product/allProductList';
$route['ProductList(:num)'] = 'product/allProductList';
Initialization pagination library in Controller function.
public function allProductList()
{
$config = array();
$config["base_url"] = base_url() . "ProductList/";
$total_row = $this->product_model->getproductList_count();
$config["total_rows"] = $total_row;
$config["per_page"] = 16;
$config["uri_segment"] = 2;
$choice = $config["total_rows"] / $config["per_page"];
$config["num_links"] = round($choice);
$config['cur_tag_open'] = ' <li class="active"><a >';
$config['cur_tag_close'] = '</a></li>';
$config['num_tag_open'] = ' ';
$config['num_tag_close'] = ' ';
$config['next_link'] = 'Next';
$config['prev_link'] = 'Previous';
$this->pagination->initialize($config);
if($this->uri->segment(2)){
$page = ($this->uri->segment(2)) ;
}
else{
$page = 0;
}
$data["productlist"] = $this->product_model->getproductList($config["per_page"], $page);
$str_links = $this->pagination->create_links();
$data["linked"] = explode(' ',$str_links );
$this->load->view('product',$data);
}
Controller call in Model.
function getproductList_count()
{
$query = $this->db->select('*');
$query = $this->db->from('tbl_products');
$query = $this->db->get();
return $query->num_rows();
}
function getproductList($limit, $start)
{
$query = $this->db->select('*');
$query = $this->db->from('tbl_products');
$query = $this->db->limit($limit, $start);
$query = $this->db->get();
return $query->result();
}
Now, finally, controller call in view.
if(!empty($linked))
{
?>
<ul class="pagination" style="">
<?php foreach ($linked as $link) {
?>
<li><?=$link?></li>
<?php } ?>
</ul>
<?php }
?>
Here are Css that help to beautify your pagination block.
CSS Pagination format code
<style>
.pagination {
display: inline-block;
padding-left: 0;
margin: 20px 0;
border-radius: 4px
}
.pagination>li {
display: inline
}
.pagination>li>a,
.pagination>li>span {
position: relative;
float: left;
padding: 6px 12px;
margin-left: -1px;
line-height: 1.42857143;
color: #337ab7;
text-decoration: none;
background-color: #fff;
border: 1px solid #ddd
}
.pagination>li:first-child>a,
.pagination>li:first-child>span {
margin-left: 0;
border-top-left-radius: 4px;
border-bottom-left-radius: 4px
}
.pagination>li:last-child>a,
.pagination>li:last-child>span {
border-top-right-radius: 4px;
border-bottom-right-radius: 4px
}
.pagination>li>a:focus,
.pagination>li>a:hover,
.pagination>li>span:focus,
.pagination>li>span:hover {
z-index: 2;
color: #23527c;
background-color: #eee;
border-color: #ddd
}
.pagination>.active>a,
.pagination>.active>a:focus,
.pagination>.active>a:hover,
.pagination>.active>span,
.pagination>.active>span:focus,
.pagination>.active>span:hover {
z-index: 3;
color: #fff;
cursor: default;
background-color: #337ab7;
border-color: #337ab7
}
.pagination>.disabled>a,
.pagination>.disabled>a:focus,
.pagination>.disabled>a:hover,
.pagination>.disabled>span,
.pagination>.disabled>span:focus,
.pagination>.disabled>span:hover {
color: #777;
cursor: not-allowed;
background-color: #fff;
border-color: #ddd
}
.pagination-lg>li>a,
.pagination-lg>li>span {
padding: 10px 16px;
font-size: 18px;
line-height: 1.3333333
}
.pagination-lg>li:first-child>a,
.pagination-lg>li:first-child>span {
border-top-left-radius: 6px;
border-bottom-left-radius: 6px
}
.pagination-lg>li:last-child>a,
.pagination-lg>li:last-child>span {
border-top-right-radius: 6px;
border-bottom-right-radius: 6px
}
.pagination-sm>li>a,
.pagination-sm>li>span {
padding: 5px 10px;
font-size: 12px;
line-height: 1.5
}
.pagination-sm>li:first-child>a,
.pagination-sm>li:first-child>span {
border-top-left-radius: 3px;
border-bottom-left-radius: 3px
}
.pagination-sm>li:last-child>a,
.pagination-sm>li:last-child>span {
border-top-right-radius: 3px;
border-bottom-right-radius: 3px
}
</style>