PHP 分页代码
<?php /* *分页函数 *total 总条数 *pageSize 每页显示的条数 *size 页码范围 *pixUrl url额外参数 * * */ function page($total,$pageSize=3,$size=3,$pixUrl=""){ //获取当前页数据 $page=isset($_GET['page'])?$_GET['page']:1; //总页数 $pageNum=ceil($total/$pageSize); //求偏移量 $offset=floor($size/2); //首页尾页 $startPage=$page-$offset; $endPage=$page+$offset; //控制分页范围的核心代码 if($startPage<=0){ $endPage=$page+$offset+abs($startPage)+1; } //上一页和下一页 $prePage=max(1,$page-1);//上一页 $nextPage=min($page+1,$pageNum);//下一页 //界限判断 if($endPage>$pageNum){ $endPage=$pageNum; $startPage=$pageNum-2*$offset; } if($startPage<=0){ $startPage=1; } //分页字符串拼接 $pageSt=""; if($page>1){ $pageSt.="<a href='?page=1&$pixUrl'>首页</a>"; } //上一页 $pageSt.="<a href='?page=$prePage&$pixUrl'>上一页</a>"; //中间列表页 for($i=$startPage;$i<=$endPage;$i++){ if($i==$page){ $pageSt.="<a href='?page=$i&$pixUrl'><font color='red'>$i</font></a>"; continue; } $pageSt.="<a href='?page=$i&$pixUrl'>$i</a>"; } //下一页 $pageSt.="<a href='?page=$nextPage&$pixUrl'>下一页</a>"; if($page<$pageNum){ $pageSt.="<a href='?page=$pageNum&$pixUrl'>尾页</a>"; } //拼接limit参数 // $limitStart=($page-1)*$pageSize; $limit="limit $limitStart,$pageSize"; $data=array('limit'=>$limit,'pageStr'=>$pageSt); return $data; }
分页原理梳理
1.1 当前页接收
1.2 偏移量和总页数计算
1.3 分页小车核心代码
这样做的目的是为了保证,整体页码范围为我们设定的值。
1.4 上一页与下一页的判断
$prePage=max(1,$page-1);//上一页
$nextPage=min($page+1,$pageNum);//下一页
1.5 界限判断
if($endPage>$pageNum){
$endPage=$pageNum;
$startPage=$pageNum-2*$offset;
}
if($startPage<=0){
$startPage=1;
}
1.6 中间列表展示
for($i=$startPage;$i<=$endPage;$i++){
if($i==$page){
$pageSt.="<a href='?page=$i&$pixUrl'><font color='red'>$i</font></a>";
continue;
}
$pageSt.="<a href='?page=$i&$pixUrl'>$i</a>";
}
1.7 Limit偏移量计算
$limitStart=($page-1)*$pageSize;