首页 > 开发 > PHP > 正文

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

2024-05-04 23:06:49
字体:
来源:转载
供稿:网友

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

举个按关键词搜索结果分页的例子.

视图HTML,代码如下:

  1. <div id="body"> 
  2. <form action="/index.php/search/index/" method="get"> 
  3. <p>请输入书名、作者、出版社中的一个或多个来查询。</p> 
  4. <p><input type="text" name="s" value="" size="64" /> <input type="submit" value="搜索" /></p> 
  5. </form> 
  6. </div> 

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

  1. public function index() { 
  2. $keyword = $this->input->get ( 's' ); 
  3. $offset = $this->input->get ( 'offset' ); 
  4.  
  5. if (emptyempty ( $offset )) { 
  6. $offset = 0; 
  7.  
  8. if (! emptyempty ( $keyword )) { 
  9. $this->load->model ( 'book_model' ); 
  10. $this->load->library ( 'pagination' ); 
  11.  
  12. $per_page = 10; 
  13. $config ['num_links'] = 5; 
  14. $config ['base_url'] = '/index.php/' . $this->router->class . '/' . $this->router->method . '/?s=' . $keyword
  15. $config ['per_page'] = $per_page
  16. $config ['total_rows'] = $this->Book_Model->find_by_name ( $keyword, NULL, NULL, true ); 
  17. $config ['page_query_string'] = false; 
  18. $config ['query_string_segment'] = 'offset'//重新定义记录起始位置的参数名,默认为per_page 
  19.  
  20. $this->pagination->initialize ( $config ); 
  21. $data ['books'] = $this->Book_Model->find_by_name ( $keyword$per_page$offset ); 
  22. $this->load->view ( 'search'$data ); 
  23. else { 
  24. $this->load->view ( 'search' ); 

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

模型,代码如下:

  1. public function find_by_name($name$per_page=0, $offset = 0, $is_total = false) { 
  2. if ($is_total) {//总数 
  3. $query = $this->db->query ( "select count(id) as cnt from {$this->_book} where book_name like '%{$name}%'" ); 
  4. if ($query->num_rows () > 0) { 
  5. $row = $query->row (); 
  6. $ret = $row->cnt; 
  7. }else{//列表 
  8. $query = $this->db->query ("select * from {$this->_book} where book_name like '%{$name}%' limit {$offset}, {$per_page}"); 
  9. $ret = $query->result (); 
  10. return $ret

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表