您能帮我解决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(); ?>
如果您能提供帮助并预先感谢,我会很高兴
答案 0 :(得分:0)
除非该索引函数属于默认站点控制器,否则不能将base_url()函数用作分页的base_url。
改为将行更改为此:
$config['base_url'] = site_url('controller/method/');
同样,您的数据不受限制的原因是,您将start参数作为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 Limiting
此外,通过查看代码,$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;
}
答案 1 :(得分:0)
$config['base_url'] = 'http://example.com/controller/index/page/'
尝试添加索引作为方法名称config ['base_url]。这样,无论何时创建分页网址,它都包含方法名称。 发生这种情况是由于自动调用了索引方法,即,我们不需要提及方法名称,但在分页网址中,我们必须传递offset参数,而必须使用完整网址。