用PHP和SQL Sever实现分页显示
2024年02月23日
我们在浏览网页时,经常看到分页显示的页面。如果想把大量数据提供给浏览者,分页显示是个非常实用的方法。在下面的文章中,我们将介绍如何用PHP和MS SQL Server实现对数据库中纪录的分页显示。在本例中,我们用mssql_num_rows()函数得到当前查询的记录数,结合页面大小SgPageSize,得到当前记录集要显示的页面数,为分页显示打下了基础。mssql_data_seek()函数是分页显示的关键函数,该函数的第二个参数标示当前纪录的偏移量,根据这个偏移量就可以找到要显示的页面。
分页显示源程序:
<br><html>
<head>
<title>PHP分页</title>
</head>
<body>
<?
//为了便于理解和更快地应用到工作中去,我们以MS SQL Server的NorthWind数据库Customers表为例。
$gPageSize=10;//每页显示的记录数
$hostname="localhost";//MSSQL Server
$dbuser="sa";//用户名
$dbpasswd="1111111";//密码
//连接数据库
$id=mssql_connect($hostname,$dbuser,$dbpasswd)or die("无法连接数据库服务器!");
//选择数据库,为了方便,这里以MSSQL Server的NorthWind数据库为例
$db=mssql_select_db("northwind",$id)or die("无法连接数据库!");
//以Customers表为例,构建查询字符串
$query="select*from Customers";
//执行查询语句
$rresult=mssql_query($query)or die("无法执行SQL:$query");
//$page变量标示当前显示的页
if(!isset($page))$page=1;
if($page==0)$page=1;
//得到当前查询到的纪录数$nNumRows
if(($nNumRows=mssql_num_rows($rresult))<=0)
{
echo"<p align=center>没有纪录";
exit;
};
//得到最大页码数MaxPage
$MaxPage=(int)ceil($nNumRows/$gPageSize);
if((int)$page>$MaxPage)
$page=$maxPage;
?>
<table align="center"width="80%"border=0><tr><td><?echo"<font size=2>第
$page页,共$MaxPage页</font>";?></td><td></td></tr></table>
<table align="center"width="80%"border="1"cellspacing="0"cellpadding="4"bordercolorlight="#CC9966"bgcolor="#00F2EE"bordercolordark="#FFFFFF"class="LZH">
<tr bgcolor="#F7F2ff"style="font-size:14.8px;font-weight:bold">
<?
//显示表格头
for($iCnt=0;$iCnt<mssql_num_fields($rresult);$iCnt++)
{
echo"<td>".mssql_field_name($rresult,$iCnt)."</td>";
}
?>
</tr>
<?
//根据偏移量($page-1)*$gPageSize,运用mssql_data_seek函数得到要显示的页面
if(mssql_data_seek($rresult,($page-1)*$gPageSize))
{
$i=0;
//循环显示当前纪录集
for($i;$i<$gPageSize;$i++)
{
echo"<tr style=\"font-size:12px\">";
//得到当前纪录,填充到数组$arr;
$arr=mssql_fetch_row($rresult);
if($arr)
{
//循环显示当前纪录的所有字段值
for($nOffSet=0;$nOffSet<count($arr);$nOffSet++)
{
echo"<td>".$arr[$nOffSet]."</td>";
}
}
echo"</tr>";
}
}
?>
</table>
<br>
<hr size=1 width=80%>
<div align=center style="font-size:12px">
<?
//首页和上一页的链接
if($nNumRows>1&&$page>1)
{
$prevPage=$page-1;
echo"<a href=$PHP_SELF?page=1>首页</a>";
echo"<a href=$PHP_SELF?page=$prevPage>上一页</a>";
}
//下一页和末页的链接
if($page>=1&&$page<$MaxPage)
{
$nextPage=$page+1;
echo"<a href=$PHP_SELF?page=$nextPage>下一页</a>";
echo"<a href=$PHP_SELF?page=$MaxPage>末页</a>";
}
?>
</div>
</body>
</html>
把上述脚本程序进行一些修改,你就可以建立自己的服务器端分页显示的脚本程序了。