之前用户thinkphp 做分页遇到一些分页问题;搜索时将搜索条件带入分页:
$map['article_title'] = urldecode($_GET['article_title']); $date_sosuo['article_title'] = array('like','%'.$map['article_title'].'%'); $count = $article->where($date_sosuo)->count(); //总条数 $Page = new Page($count,10);// 实例化分页类 传入总记录数和每页显示的记录数 foreach($map as $key=>$val) { $Page->parameter.="$key=".urlencode($val)."&"; } $show = $Page->show(); // 分页显示输出 $this->assign('page',$show); // 赋值分页输出 $list= $article->where($date_sosuo)->order("article_sort")->limit($Page->firstRow.','.$Page->listRows)->select();
这样做能成功;
但是我在页面做一些交付的时候很麻烦;所有自己就写了一个php原生的分页带入条件;
public function index(){ $client = M('clients'); //客户表 //搜索条件 $where = ''; if($_GET['clients_state']){ $page_w['clients_state'] = urldecode($_GET['clients_state']); $where['clients_state'] = array('like','%'.$page_w['clients_state'].'%'); } if($_GET['clients_name']){ $page_w['clients_name'] = urldecode($_GET['clients_name']); $where['clients_name'] = array('like','%'.$page_w['clients_name'].'%'); } if($_GET['clients_phone']){ $page_w['clients_phone'] = urldecode($_GET['clients_phone']); $where['clients_phone'] = array('like','%'.$page_w['clients_phone'].'%'); } $where['clients_qiandan_time'] = array('lt','3600'); $name_z = ''; foreach($page_w as $ke=>$val){ $name_z .= $ke.'='.$val.'&'; } $count = $client->field('clients_id,clients_name,clients_phone')->where($where)->count(); $Page_size = 10; //分页条数 $page_count = ceil($count/$Page_size); //总页数 $init = 1; $page_len = 5; //显示页码数 $max_p = $page_count; //最大页数 $pages = $page_count; //总页数 //判断当前页码 if(empty($_GET['page'])||$_GET['page']<0){ $page=1; }else { $page=$_GET['page']; } $page_len = ($page_len%2)?$page_len:$pagelen+1; //页码个数 $pageoffset = ($page_len-1)/2; //页码个数左右偏移量 $offset = $Page_size*($p-1); $result = $client->field('clients_id,clients_name,clients_phone')->limit($offset,$Page_size)->where($where)->select(); foreach($result as $v){ echo $v['clients_name'].'<br/>'; } echo '<br/>'; $page_page = ''; //1、得到 总页数 $pages 、 每页数 $Page_size、 显示页数 $page_len $page_page .= "$page/$pages 页"; if($page!=1){ //将条件带入分页 $key.="<a class='paging' href=\"".$_SERVER['PHP_SELF']."?".$name_z."page=".($page-1)."\">上一页</a>"; //上一页 }else { $key.=" 上一页 "; //上一页 } if($pages>$page_len){ //如果当前页小于等于左偏移 if($page<=$pageoffset){ $init=1; $max_p = $page_len; }else{//如果当前页大于左偏移 //如果当前页码右偏移超出最大分页数 if($page+$pageoffset>=$pages+1){ $init = $pages-$page_len+1; }else{ //左右偏移都存在时的计算 $init = $page-$pageoffset; $max_p = $page+$pageoffset; } } } //输出页码 for($i=$init;$i<=$max_p;$i++){ if($i==$page){ $key.=' <span>'.$i.'</span>'; } else { //将条件带入分页 $key.=" <a class='paging' href=\"".$_SERVER['PHP_SELF']."?".$name_z."page=".$i."\">".$i."</a>"; } } if($page!=$pages){ //将条件带入分页 $key.=" <a class='paging' href=\"".$_SERVER['PHP_SELF']."?".$name_z."page=".($page+1)."\">下一页</a> ";//下一页 }else { $key.=" 下一页 ";//下一页 } echo $key; //输出分页 }
输出效果
使用原生的分页,感觉速速快一点;也好用一点。
个人观点,勿喷。。。。