Home >php教程 >PHP源码 >php CI框架学习笔记-分页实现程序

php CI框架学习笔记-分页实现程序

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-08 17:24:301110browse

本文章是一个自己的对CI框架的学习笔记,用一个完整的搜索,查找并且实现分页的程序给大家参考参考。

<script>ec(2);</script>

举个按关键词搜索结果分页的例子,
1.视图HTML

 代码如下 复制代码



请输入书名、作者、出版社中的一个或多个来查询。





即表单提交到名叫search的controller和名叫index的方法, 其中包含了一些动态参数,不是纯列表,故相对比较复杂,后面会提到。

 代码如下 复制代码

public function index() {
$keyword = $this->input->get ( 's' );
$offset = $this->input->get ( 'offset' );

if (empty ( $offset )) {
$offset = 0;
}

if (! empty ( $keyword )) {
$this->load->model ( 'book_model' );
$this->load->library ( 'pagination' );

$per_page = 10;
$config ['num_links'] = 5;
$config ['base_url'] = '/index.php/' . $this->router->class . '/' . $this->router->method . '/?s=' . $keyword;
$config ['per_page'] = $per_page;
$config ['total_rows'] = $this->Book_Model->find_by_name ( $keyword, NULL, NULL, true );
$config ['page_query_string'] = false;
$config ['query_string_segment'] = 'offset'; //重新定义记录起始位置的参数名,默认为per_page

$this->pagination->initialize ( $config );
$data ['books'] = $this->Book_Model->find_by_name ( $keyword, $per_page, $offset );
$this->load->view ( 'search', $data );
} else {
$this->load->view ( 'search' );
}
}

因为config.php中默认的enable_query_strings是false, 起始位置始终在最后,这样出来的结果类似/index.php/search/index/?s=中国/10,页码取不到,需要将此配置改为false;

3.模型

 

 代码如下 复制代码
public function find_by_name($name, $per_page=0, $offset = 0, $is_total = false) {
if ($is_total) {//总数
$query = $this->db->query ( "select count(id) as cnt from {$this->_book} where book_name like '%{$name}%'" );
if ($query->num_rows () > 0) {
$row = $query->row ();
$ret = $row->cnt;
}
}else{//列表
$query = $this->db->query ("select * from {$this->_book} where book_name like '%{$name}%' limit {$offset}, {$per_page}");
$ret = $query->result ();
}
return $ret;
}
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn