PHP+MSSQL的简单分页
PHP代码
- <?php
- $page = intval ( $_GET ['page'] );
- $gPageSize = 10; //每页显示的记录数
- $dbhost = "localhost"; //MSSQL Server
- $dbuser = "sa"; //用户名
- $dbpass = ""; //密码
- $dbname = "[user]"; //密码
- $id = mssql_connect ( $dbhost, $dbuser, $dbpass ) or die ( "无法连接数据库服务器!" );
- $db = mssql_select_db ( $dbname, $id ) or die ( "无法连接数据库!" );
- $query = "select * from A3000";
- $rresult = mssql_query ( $query, $id ) or die ( "无法执行SQL:$query" );
- //$page变量标示当前显示的页
- ! $page && $page = 1;
- //得到当前查询到的纪录数 $nNumRows
- if (($nNumRows = mssql_num_rows ( $rresult )) <= 0) {
- echo "没有纪录";
- exit ();
- }
- ;
- //得到最大页码数MaxPage
- $MaxPage = ( int ) ceil ( $nNumRows / $gPageSize );
- if (( int ) $page > $MaxPage) {
- $page = $maxPage;
- }
- echo "<table border=\"1\"><tr>";
- //显示表格头
- for($iCnt = 0; $iCnt < mssql_num_fields ( $rresult ); $iCnt ++) {
- echo "<th>" . mssql_field_name ( $rresult, $iCnt ) . "</th>";
- }
- echo "</tr>";
- //根据偏移量($page - 1)*$gPageSize,运用mssql_data_seek函数得到要显示的页面
- if (mssql_data_seek ( $rresult, ($page - 1) * $gPageSize )) {
- $i = 0;
- //循环显示当前纪录集
- for($i; $i < $gPageSize; $i ++) {
- echo "<tr>";
- //得到当前纪录,填充到数组$arr;
- $arr = mssql_fetch_row ( $rresult );
- if ($arr) {
- //循环显示当前纪录的所有字段值
- for($nOffSet = 0; $nOffSet < count ( $arr ); $nOffSet ++) {
- echo "<td>" . $arr [$nOffSet] . "</td>";
- }
- }
- echo "</tr>";
- }
- }
- echo "</table>";
- echo "第 $page 页, 共 $MaxPage 页";
- //首页和上一页的链接
- 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> ";
- }
- ?>



