[英]Why are pagination links not working for me in CodeIgniter?
我正在尝试对我的产品使用codeigniter分页,因此有多个页面显示了哪些产品,但不适用于我,我也不知道为什么。
这是我的控制器中的分页功能:
//code om in allecadeaus te bepalen hoeveel producten er per pagina zitten
public function pagination() {
//load pagination library
$this->load->library('pagination');
//laad Products_model voor pagination
$this->load->model('Pagination_model');
$this->load->model('Product_model');
$config = array();
$config["base_url"] = base_url() . "AlleCadeausController/pagination";
$config["total_rows"] = $this->products->record_count();
$config["per_page"] = 24;
$config['cur_tag_open'] = '<a><b class="text-success">';
$config['cur_tag_close'] = '</b></a>';
$config["uri_segment"] = 3;
$config['use_page_numbers'] =True;
$config['enable_query_strings'];
$this->pagination->initialize($config);
$page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
$data['title'] = "Products";
$data['products'] = $this->Product_model->selectProducts();
$data["links"] = $this->pagination->create_links();
$this->load->view("allecadeaus", $data);
}
通过这一行,我将从产品表中获取所有产品:
$data['products'] = $this->Product_model->selectProducts();
我的分页模型:
<?php
class Pagination_model extends CI_Model
{
public function __construct() {
parent::__construct();
}
public function record_count() {
return $this->db->count_all("products");
}
public function fetch_products($limit, $start) {
$this->db->limit($limit, $start);
$query = $this->db->get_where('users',array('Is_Hidden'=>0));
if ($query->num_rows() > 0) {
foreach ($query->result() as $row) {
$data[] = $row;
}
return $data;
}
return false;
}
?>
现在,在我所有产品的页面上,我尝试回显链接,但是它不起作用。 我看不到正确的链接,而只有1个链接导致了其他问题。 这是我在所有产品页面上看到的代码:
<div class="text-center"><nav aria-label="Page navigation">
<ul class="pagination">
<li><?php echo $links; ?></li>
</ul>
</nav></div>
我究竟做错了什么?
请作如下更改:
控制器:
public function pagination($row = 0) {
//load pagination library
$this->load->library('pagination');
//laad Products_model voor pagination
$this->load->model('Pagination_model');
$this->load->model('Product_model');
$config = array();
$limit = '24';
$config['base_url'] = site_url() . '/AlleCadeausController/pagination';
$config['full_tag_open'] = "<ul class='pagination'>";
$config['full_tag_close'] = '</ul>';
$config['num_tag_open'] = '<li>';
$config['num_tag_close'] = '</li>';
$config['cur_tag_open'] = '<li class="active"><a href="#">';
$config['cur_tag_close'] = '</a></li>';
$config['prev_tag_open'] = '<li>';
$config['prev_tag_close'] = '</li>';
$config['first_tag_open'] = '<li>';
$config['first_tag_close'] = '</li>';
$config['last_tag_open'] = '<li>';
$config['last_tag_close'] = '</li>';
$config['prev_link'] = '<i class="fa fa-long-arrow-left"></i>Previous Page';
$config['prev_tag_open'] = '<li>';
$config['prev_tag_close'] = '</li>';
$config['next_link'] = 'Next Page<i class="fa fa-long-arrow-right"></i>';
$config['next_tag_open'] = '<li>';
$config['next_tag_close'] = '</li>';
$config["total_rows"] = $this->Product_model->record_count();
$config['per_page'] = $limit;
$this->pagination->initialize($config);
$data['links'] = $this->pagination->create_links();
$data['products'] = $this->Product_model->selectProducts($row,$limit);
$this->load->view("allecadeaus", $data);
}
模型:
function selectProducts($row,$limit)
{
$query = $this->db->get('Your_table_name',$limit,$row);
if ($query->num_rows() > 0){
return $query->result_array();
}
else {
return array();
}
}
function record_count(){
$this->db->from('Your_table_name');
$query = $this->db->get();
$row = $query->num_rows();
return $row;
}
这将帮助您..谢谢!
您混合使用代码,分页而不是分页结果。
加,
$config["num_links"] = 5; //Number of links in pagination
初始化Codeigniter分页库后。 您必须在数据库中执行分页查询,例如:
$where = "IF you have got";
$orderby "IF you have got";
$data['products'] = $this->Pagination_model->select_products($config["per_page"], $this->uri->segment(3), $where, $orderby);
然后在您的模型Pagination_model中,您应该得到以下信息:
public function select_products($per_page, $segment, $where, $orderby)
{
if (!isset($segment)) $segment = 1;
$init= ($segment - 1) * $per_page;
$sql = "SELECT *
FROM Your_table
$where
ORDER BY $orderby
OFFSET $init ROWS
FETCH NEXT $per_page ROWS ONLY";
$query= $this->db->query($sql);
return $query->result_array();
}
确保您正确指向this-> uri-> segment()为3。我认为您没有分页链接,因为您的查询中没有结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.