加入收藏 | 设为首页 | 会员中心 | 我要投稿 伊春站长网 (https://www.0458zz.com/)- 管理运维、图像技术、数据标注、智能营销、数据计算!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-07-22 09:20:11 所属栏目:PHP教程 来源:互联网
导读:本文章是一个自己的对CI框架的学习笔记,用一个完整的搜索,查找并且实现分页的程序给大家参考参考. 举个按关键词搜索结果分页的例子. 视图HTML,代码如下: div id=body form action=/index.php/search/index/ method=get p请输入书名、作者、出版社中的一个或
  本文章是一个自己的对CI框架的学习笔记,用一个完整的搜索,查找并且实现分页的程序给大家参考参考.
 
  举个按关键词搜索结果分页的例子.
 
  视图HTML,代码如下:
 
  <div id="body">
  <form action="/index.php/search/index/" method="get">
  <p>请输入书名、作者、出版社中的一个或多个来查询。</p>
  <p><input type="text" name="s" value="" size="64" /> <input type="submit" value="搜索" /></p>
  </form>
  </div>
  即表单提交到名叫search的controller和名叫index的方法,其中包含了一些动态参数,不是纯列表,故相对比较复杂,后面会提到,代码如下:
 
  public function index() {
  $keyword = $this->input->get ( 's' );
  $offset = $this->input->get ( 'offset' );
   
  if (emptyempty ( $offset )) {
  $offset = 0;
  }
   
  if (! emptyempty ( $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;
 
  模型,代码如下:
 
  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;
  } 

(编辑:伊春站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读