牛骨文教育服务平台(让学习变的简单)
博文笔记

php搜索条件分页;将条件导入分页

创建时间:2017-03-31 投稿人: 浏览次数:796

之前用户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; //输出分页
	}

输出效果


使用原生的分页,感觉速速快一点;也好用一点。

个人观点,勿喷。。。。

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。