用PHP和SQL Sever实现分页显示

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