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