page.php
--------------------------
<?php
//说明:这个是分页通用函数,本函数只负责生成分页信息,不对数据库进行任何操作。
//$resultCount: 记录集总数
//$pageSize:每页显示的记录数
//$currentPage:当前页数
//$url:连接URL,可以是“myPage?page=”或者可以跟参数“myPage?name=searchName&page=”
function getPages($resultCount,$pageSize,$currentPage,$url)
{
//计算总页数
$pageCount=0;
if($resultCount%$pageSize==0)
{
$pageCount=(int)$resultCount/$pageSize;
}else{
$pageCount=(int)($resultCount/$pageSize)+1;
}
//计算当前页
if(!$currentPage||$currentPage<0)
{
$currentPage=1;
}
if($currentPage>=$pageCount)
{
$currentPage=$pageCount;
}
//开始拼凑[上一页],[下一页]等连接
$beginPag;
$previousPage;
$nextPage;
$lastPage;
if(($currentPage==$pageCount)&&($currentPage==1))
{
$beginPage=\'[首页]\';
$previousPage=\'[上一页]\';
$nextPage=\'[下一页]\';
$lastPage=\'[尾页]\';
}else if($currentPage==1)
{//这个情况下[上一页]与[首页]无效
$beginPage=\'[首页]\';
$previousPage=\'[上一页]\';
$nextPage=\'<a href=\'.$url.($currentPage+1).\'>[下一页]</a>\';
$lastPage=\'<a href=\'.$url.$pageCount.\'>[尾页]</a>\';
}else if($currentPage==$pageCount)
{//这个时候[下一页]与[尾页]无效
$beginPage=\'<a href=\'.$url.\'1>[首页]</a>\';
$previousPage=\'<a href=\'.$url.($currentPage-1).\'>[上一页]</a>\';
$nextPage=\'[下一页]\';
$lastPage=\'[尾页]\';
}
else
{
$beginPage=\'<a href=\'.$url.\'1>[首页]</a>\';
$previousPage=\'<a href=\'.$url.($currentPage-1).\'>[上一页]</a>\';
$nextPage=\'<a href=\'.$url.($currentPage+1).\'>[下一页]</a>\';
$lastPage=\'<a href=\'.$url.$pageCount.\'>[尾页]</a>\';
}
$pageInfo=\'共有\'.$resultCount.\'条记录,目前第\'.$currentPage.\'页,共\'.$pageCount.\'页\';
$showPages=$pageInfo.\' \'.$beginPage.\' \'.$previousPage.\' \'.$nextPage.\' \'.$lastPage;
return $showPages;
}
?>
测试文件pageTest.php的BODY部分
-----------------------------------------------
<?php
require("page.php");
$resultCount=50;
$pageSize=8;
$currentPage= $_GET["page"];
$url="pageTest.php?page=";
$show=getPages($resultCount,$pageSize,$currentPage,$url);
echo $show;
?>
现场运用中,需要计算出$resultCount,总页数$pageCount, $currentPage等,这样可以构造高效的SQL语句。
如:$fromNum=$currentPage*$pageSize-$pageSize;
$sql = "SELECT * FROM person limit $fromNum,$pageSize"; //mysql适用
