好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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

本文章是一个自己的对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  ( empty empty  (  $offset  )) {  $offset  = 0;  }    if  (!  empty 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;

模型,代码如下:

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 ;  } 

查看更多关于php CI框架学习笔记-分页实现程序 - php分页的详细内容...

  阅读:88次