haidong 发表于 2010-2-24 13:34:05

用PHP和SQL Sever实现分页显示

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