龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

phpZF框架下类似Google搜索分页

时间:2014-07-22 14:49来源: 作者: 点击:
分享到:
使用zf框架来实现类似Google搜索界面的分页,能优化的请赐教
使用zf框架来实现类似Google搜索界面的分页,能优化的请赐教
/**
	 *
	 * @param unknown_type $model 表类型
	 * @param unknown_type $ncontroller 那个控制器提交的controller
	 * @param unknown_type $naction 那个action提交的action
	 */
	public function fenyepage2($model,$ncontroller,$naction){
		if(!isset($_SESSION))
		{session_start();}
		$pageSize = $_SESSION['pagesize'];
		$pageNow = $_SESSION['pagenow'];
		$offset = ($pageNow-1)*$pageSize;
		$db = $this->getAdapter();
		$select = $db->select();
		$select->from('student','*');
		if(!isset($_SESSION))
		{session_start();}
		if($_SESSION['qsname']!=""){
			$sname = $_SESSION['qsname'];
			$select->where('sname like ?',"%$sname%");
		}
		if($_SESSION['qsaddress']!=""){
			$saddress = $_SESSION['qsaddress'];
			$select->where('saddress like ?',"%$saddress%");
		}
		if($_SESSION['qsdept']!=""){
			$sdept = $_SESSION['qsdept'];
			$select->where('sdept like ?',"%$sdept%");
		}
		$coutNews = $db->fetchAll($select);
		$pageCount = ceil(count($coutNews)/$pageSize);
		$select->limit($pageSize,$offset);//第一个参数:总共显示多少个。第二个参数:从第几个开始显示
		$res = $db->fetchAll($select);
		$native = null;
		$native = "<a href='\\$ncontroller\\$naction?pageNow=1&pagesize=$pageSize'>首页</a>&nbsp";
		if($pageNow>1){
			$nextPage = $pageNow-1;
			$native.="&nbsp;<a href='\\$ncontroller\\$naction?pageNow=$nextPage&pagesize=$pageSize'>上一页</a>&nbsp;";
		}
			if(($pageNow-1)>5){
				if($pageNow+4>$pageCount){//如果最后的页数和理应前面开始的页数小于10则
					$start = $pageCount-9;//开始的页数和结束的页数相差9
				}else{
					$start=$pageNow-5;//开始位置和结束位置相差5
				}
			}else{
				$start = floor(($pageNow-1)/10)*10+1;
			}
			if($pageCount>=$start+10){
				$index = $start+10;
			}
			else{
				$index = $pageCount+1;
			}

			for(;$start<$index;$start++){
				$native.="&nbsp;&nbsp;<a href='\\$ncontroller\\$naction?pageNow=$start&pagesize=$pageSize'>$start</a>";
			}
		if($pageNow<$pageCount){
			$nextPage = $pageNow+1;
			$native.="&nbsp;&nbsp;<a href='\\$ncontroller\\$naction?pageNow=$nextPage&pagesize=$pageSize'>下一页</a>&nbsp;";	
		}

		$native.="&nbsp;&nbsp;<a href='\\$ncontroller\\$naction?pageNow=$pageCount&pagesize=$pageSize'>末页</a>&nbsp;";
		$native.="&nbsp;&nbsp;当前{$pageNow}||总共{$pageCount}页";
		$model->arrs = $res;
		$model->native = $native;
	}
精彩图集

赞助商链接