我们在浏览网页时,经常看到分页显示的页面。如果想把大量数据提供给浏览者,分页显示是个非常实用的方法。在下面的文章中,我们将介绍如何用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" >
<?
//显示表格头
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 >
<?
//首页和上一页的链接
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>
把上述脚本程序进行一些修改,你就可以建立自己的服务器端分页显示的脚本程序了。