PHP分页显示是一种非常常见的浏览和显示大量数据的方法,属于web编程中最常处理的事件之一。所谓分页显示,也就是将数据库中的结果集人为的分成一段一段的来显示,这里需要两个初始的参数:1、每页多少条记录($PageSize),2、当前是第几页($Page)。
现在只要再给我一个结果集,我就可以显示某段特定的结果出来。至于其他的参数,比如:上一页($PreviousPageID)、下一页($NextPageID)、总页数($numPages)等等,都可以根据前边这几个东西得到。以mysql数据库为例,如果要从表内截取某段内容,sql语句可以用:select * from table limit offset, rows。看看下面一组sql语句,尝试一下发现其中的规率。
前10条记录:select * from table limit 0,10
第11至20条记录:select * from table limit 10,10
第21至30条记录:select * from table limit 20,10
这一组sql语句其实就是当$PageSize=10的时候取表内每一页数据的sql语句,我们可以总结出这样一个模板:select * from table limit ($page - 1) * $PageSize, $PageSize
PHP颁布代码如下:
<?php
header("Content-Type:text/html; charset=gb2312");
//连接数据库
@$conn=mysql_connect('localhost','root','123456') or die("数据库服务器连接失败");
mysql_query("set names gb2312");
mysql_select_db("201003info",$conn) or die("数据库连接失败");
//取出结果构成数组
$sql="select inid,iname as '姓名',if(igender,'男','女') as '性别',itel as '电话' ,iaddress as '地址' from infotion order by inid desc";
//设置每页记录数
$pagesize=2;
$page=intval($_GET["page"]);//页码数
if($page<=1) $page=1;
//计算总页数 以保证有效性
$result=mysql_query($sql) or die($sql."有错误");
$totalrow=mysql_num_rows($result) or die("没有数据");
$totalpage=ceil($totalrow/$pagesize);
if($page>=$totalpage) $page=$totalpage;
//起始位置
$startrow=($page-1)*$pagesize;
$sql.=" limit $startrow,$pagesize";
$result=mysql_query($sql) or die($sql."有错误");
$tmparr=array();
while($row=mysql_fetch_assoc($result)) $tmparr[]=$row;
if(empty($tmparr)){echo "没有数据";exit;}
//输出表格
echo "<table border=\"1\">";
//表头
echo "<tr>";
foreach($tmparr[0] as $key => $val){
echo "<td>".$key."</td>";
}
echo "</tr>";
//表体
foreach($tmparr as $val){
echo "<tr>";
foreach($val as $value){
echo "<td>".$value."</td>";
}
echo "</tr>";
}
echo "</table>";
//分页控制
$url=$_SERVER['PHP_SELF']."?page=";
$url="<a href=\"$url";//"<a href=\"index.php?page=
// $url="<a href=\"index.php?page=1\">首页</a>"
if($page==1) echo "首页|上页";
else echo $url."1\">首页</a>|".$url.($page-1)."\">上页</a>";
echo "|";
if($page==$totalpage) echo "下页|末页";
else echo $url.($page+1)."\">下页</a>|".$url.$totalpage."\">末页</a>";
echo " 共".$totalpage."页当前第".$page."页";
?>
php分页的代码下载: phppage.rar