我们在浏览网页时,经常看到分页显示的页面。如果想把大量数据提供给浏览者,分页显示是个非常实用的方法。在下面的文章中,我们将介绍如何用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>
把上述脚本程序进行一些修改,你就可以建立自己的服务器端分页显示的脚本程序了。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器