首页 > 开发 > PHP > 正文

PHP和SQL Sever实现分页显示

2024-05-04 22:58:46
字体:
来源:转载
供稿:网友
  • 本文来源于网页设计爱好者web开发社区http://www.html.org.cn收集整理,欢迎访问。
  • 【摘 要】 我们用mssql_num_rows()函数得到当前查询的记录数,mssql_data_seek()函数是分页显示的关键函数

        我们在浏览网页时,经常看到分页显示的页面。如果想把大量数据提供给浏览者,分页显示是个非常实用的方法。在下面的文章中,我们将介绍如何用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>


      
    把上述脚本程序进行一些修改,你就可以建立自己的服务器端分页显示的脚本程序了。

    发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表