请问哪位大侠能给我解释下PHP分页的原理么,麻烦附上代码加注释,我大部分能看懂,但是有些模糊,谢谢
发布网友
发布时间:2022-08-19 00:38
我来回答
共2个回答
热心网友
时间:2023-10-21 05:02
<?php
/*
$recordcount 总数据量
$pernumber 每页显示记录数
$pagelong 显示页码的长度
*/
function showpage($pagecount,$pagelong=5){
if(!isset($_GET['page'])){
$_GET['page']='';
}
if(!isset($p)){
$p='';
}
if($_GET['page']<1||$_GET['page']==""){
$_GET['page']=1;
}
//总页数小于等于页码长度
if($pagecount<=$pagelong){
for($i=1;$i<=$pagecount;$i++){
if($i==$_GET['page']){
$p=$p." <span>$i</span> ";
}
else{
$p =$p." <a href='".get_url($i)."' hidefocus>$i</a> ";
}
}
}
//总页数大于页码长度
else{
//循环页码数
for($i=$_GET['page'];$i<=$_GET['page']+$pagelong-1;$i++){
//判断是否在当前页
if($i==$_GET['page']&&$_GET['page']!=1){
//输出 当前页前面的
for($i=$_GET['page']-5;$i<$_GET['page'];$i++){
if($i>=1){
$p=$p." <a href='".get_url($i)."' hidefocus>$i</a> ";
}
}
$p=$p." <span>$i</span> ";
}
else{
if($i==$_GET['page']){
$p =$p." <span>$i</span> ";
}
else{
$p =$p." <a href='".get_url($i)."' hidefocus>$i</a> ";
}
}
//总页数-当前页码 小于 页码长度
if(($pagecount-$_GET['page'])<=$pagelong){
for($i=$_GET['page']+1;$i<=$pagecount;$i++){
$p=$p." <a href='".get_url($i)."' hidefocus>$i</a> ";
}
break;
}
//当前页大于等于总页数
if($_GET['page']>=$pagecount){
break;
}
}
}
//当前页不是首页
if($_GET['page']!="1"){
$a=$_GET['page']-1;
//if($_GET['page']>4){
$p = " <a href='".get_url(1)."' hidefocus><<</a> <a href='".get_url($a)."' hidefocus><</a> ".$p;
//}
}
//当前页不是尾页
if($_GET['page']<$pagecount){
$a=$_GET['page']+1;
if($_GET['page']<$pagecount-2){
$p = $p." <a href='".get_url($a)."' hidefocus>></a> <a href='".get_url($pagecount)."' hidefocus>>></a> ";
}
else{
$p = $p." <a href='".get_url($a)."' hidefocus>></a> ";
}
}
return $p;
}
//获取分页的URL
function get_url($page){
//默认的
if(empty($_SERVER['QUERY_STRING'])){//empty变量是否为空 $_SERVER['QUERY_STRING'] URL中第一个问号?之后的内容
return $_SERVER['PHP_SELF'].'?page='.$page;//$_SERVER['PHP_SELF'] 当前正在执行脚本的文件名
}
//有分页的
elseif(strpos($_SERVER['QUERY_STRING'],'page')!== false){//strpos获取字符串page首次出现位置(判断是否有参数page)
//有参数
if(strpos($_SERVER['QUERY_STRING'], '&') !== false){//有多个参数
$u = explode('&page', $_SERVER['QUERY_STRING']);
return $_SERVER['PHP_SELF'].'?'.$u[0].'&page='.$page;
}
//无参数的
else{
return $_SERVER['PHP_SELF'] . '?page=' . $page;
}
}
//有参数,无分页的
else{
return $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&page='.$page;
}
}
热心网友
时间:2023-10-21 05:02
function page_1($pagesql,$page=1,$pagesize=15){
$page=(int)$page<1?1:$page;
$query=$this->query($pagesql);
$rscount=$this->num_rows($query);
$url=basename($HTTP_SERVER_VARS['PHP_SELF']).'?'.$_SERVER['QUERY_STRING'];
$url=preg_replace('/[&]?page=[\w]*[&]?/i','',$url);
$pagecount=$rscount%$pagesize==0?$rscount/$pagesize:(int)($rscount/$pagesize)+1;
if($pagecount==0 or $pagecount=="") return;
$pagestr='';
if($page>$pagecount){
echo "<script>location.href='$url&page=$pagecount'</script>";
return;
}
$pagestr="[第".$page."页 共".$pagecount."页 共".$rscount."条记录] [<a href='$url&page=1'>首页</a>] [<a href='$url&page=".($page-1)."'>上页</a>] [<a href='$url&page=".($page+1)."'>下页</a>] [<a href='$url&page=$pagecount'>末页</a>] ";
return $pagestr;
}
我这写在类里面的,不懂的在追问。