PHP模拟百度分页

以前做分页,总是“首页”、“上一页”、“下一页”、“尾页”这种分页方法,如果嫌不方便,最多加上一个“跳转至”,用多了就显得非常死板。

最近,看百度、贴吧都是用的另一种分页方法。即显示“上一页”(当最前面的页码不是1时),中间页码(如1 2 3 4 5),“下一页”(当最后的页码不等于总页数时)。

思考了一下,决定做一个仿百度的分页。程序中还是需要totalPage记录总页数,pageSize记录页面显示多少条记录,curPage记录当前页面数目。另外要增加firstPage记录中间页码的第一个页码数,endPage记录中间页码的最后一个页码数,pageNum记录中间页码的个数。然后根据curPage判断,firstPage=max(curPage-1,1),endPage=min(curPage+pageNum-2,totalPage)。

代码如下:

<?php 
	
	require_once("../src/bll/VoteService.php");
	
	//当前页码
	$curPage = 1;
	//第一个页码
	$firstPage = 1;
	//总页数
	$totalPage = 0;
	//最后一个页码
	$endPage = 1;
	//一页显示5条主题
	$pageSize = 1;
	//中间的分页页码个数
	$pageNum = 5;
	
	$totalCount = VoteService::getItemNum();
	
	$totalPage = floor($totalCount/$pageSize);
	if($totalCount%$pageSize!=0){
		
		$totalPage++;
	}
	
	if(isset($_GET["curPage"])){
		
		$curPage = $_GET["curPage"];
	}
	
	if($totalPage<$pageNum){
		
		$firstPage = 1;
		$endPage = $totalPage;
	}else{
		
		if($curPage==1){
			
			$firstPage = 1;
			$endPage = $pageNum;
		}else{
			
			$firstPage = $curPage - 1;
			$endPage = $curPage + $pageNum - 2;
			
			if($endPage>$totalPage){
				
				$endPage = $totalPage;
			}
		}
	}
?>

分页条的代码如下:

<!--显示分页-->
			<p style="margin-left:30px;margin-top:20px;">
			<?php 
				if($firstPage!=1){
			?>
				<a href="main.php?lb=voteItemMan&curPage=<?php echo $curPage-1;?>" style="font-size:13px;text-decoration:none;color:orange;">上一页</a>    	
			<?php
				}
				
				//显示中间的分页
				for($i=$firstPage;$i<=$endPage;$i++){	
			?>
				<a href="main.php?lb=voteItemMan&curPage=<?php echo $i;?>" style="font-size:13px;text-decoration:none;color:orange;"><?php echo $i;?></a>    	
			<?php
				}
				
				if($endPage!=$totalPage){
			?>
				<a href="main.php?lb=voteItemMan&curPage=<?php echo $curPage+1;?>" style="font-size:13px;text-decoration:none;color:orange;">下一页</a>    	
			<?php
				}
			?>
			</p>


具体的显示效果如下图所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值