你能帮我解决Codeigniter中的分页问题吗?我有一个列出书籍的视图。我写了一些代码,现在我看到了按钮,但内容并没有像我希望的那样受到限制。找不到代码有什么问题。
这是更新后的代码:控制器:
public function index($offset=0){
$config['base_url'] = 'http://localhost/myLibrary/books/index';
//$config['total_rows'] = 200;
$config['total_rows'] = $this->db->get('books')->num_rows();
$config['per_page'] = 1;
$config['uri_segment']= 3;
$config['attributes'] = array('class' => 'pagination-link');
$config['page_query_string'] = TRUE;
$this->pagination->initialize($config);
$book_list = $this->Books_model->list_books();
$genre_list= $this->Books_model->list_genres();
$author_list= $this->Books_model->list_authors();
$view_data = array(
"book_list" => $book_list,
"genre_list" => $genre_list,
"author_list" => $author_list
);
$this->db->get('books', $config['per_page'], $this->uri->segment(3));
$start = isset($_GET['start']) ? $_GET['start'] : 0;
$book_list = $this->Books_model->list_books($start, $config['per_page']);
$this->load->view("book_list",$view_data);
$this->load->library('pagination');
$this->load->library('table');
}
型号:
public function list_books($limit = FALSE, $offset = FALSE){
if($limit)
{
$this->db->limit($offset, $limit);
}
$list=$this->db->get("books")->result();
return $list;
}
视图:
<?php echo $this->pagination->create_links(); ?>
如果你能帮忙,我会很高兴,并提前感谢
除非此索引函数属于默认的站点控制器,否则不能将base_url((函数用作分页的base_url。
相反,将您的线路更改为:
$config['base_url'] = site_url('controller/method/');
此外,您的数据不受限制的原因是,您将启动参数作为false发送给模型
应该是:
$data['records'] = $this->Books_model->list_books($this->uri->segment(3), $config['per_page'], $offset);
通过查看代码,发送到视图文件的图书列表存储在$book_list变量中,因此为了限制返回的图书数量,请将行更改为:
$start = isset($_GET['start']) ? $_GET['start'] : 0;
$book_list = $this->Books_model->list_books($start, $config['per_page']);
并将其添加到您的分页配置数组:
$config['page_query_string'] = TRUE;
在你的模型函数中更改这一行:
$this->db->limit($limit, $offset);
收件人:
$this->db->limit($offset, $limit);
如CI文件中所述
$this->db->limit(10,20(;//生成:LIMIT 20,10(在MySQL中。其他数据库的语法略有不同(
查看此处以获取更多参考CI限制
同样需要注意的是,通过查看代码,$query
和$data['records']
变量被分配了值,但从未被使用或传递到视图文件,因此它们不会执行任何
控制器中的索引方法现在应该是这样的:控制器:
public function index($offset=0){
$config['base_url'] = site_url('books/index');
//$config['total_rows'] = 200;
$config['total_rows'] = $this->db->get('books')->num_rows();
$config['per_page'] = 1;
$config['uri_segment']= 3;
$config['attributes'] = array('class' => 'pagination-link');
$config['page_query_string'] = TRUE;
$this->pagination->initialize($config);
$start = isset($_GET['start']) ? $_GET['start'] : 0;
$book_list = $this->Books_model->list_books($start, $config['per_page']);
$genre_list= $this->Books_model->list_genres();
$author_list= $this->Books_model->list_authors();
$view_data = array(
"book_list" => $book_list,
"genre_list" => $genre_list,
"author_list" => $author_list
);
$this->load->view("book_list",$view_data);
$this->load->library('pagination');
$this->load->library('table');
}
型号:
public function list_books($limit = FALSE, $offset = FALSE){
if($limit !== FALSE)
{
$this->db->limit($offset, $limit);
}
$list=$this->db->get("books")->result();
return $list;
}
$config['base_url'] = 'http://example.com/controller/index/page/'
尝试将索引添加为方法名称配置['base_url]。这样,无论何时创建分页url,它都包含方法名称。这是由于索引方法调用自动发生的,即我们不需要提及方法名称,但在分页url中,我们必须传递偏移量参数,我们必须使用完整的url。