之前用户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; //输出分页
}
输出效果
使用原生的分页,感觉速速快一点;也好用一点。
个人观点,勿喷。。。。