php如何实现sql server的分页显示(读数据)

fatkenme 2004-12-07 04:09:17
熟悉 mysql的朋友都清楚,在mysql里实现分页显示只要用以下语句:
select * from db1 limit 10(开始记录),5(取多少记录)
意思是从表db1中第10条记录开始读取,读取5条记录,
通过设置开始记录和记录量,我们可以实现分页显示,
那么在sql中如何实现呢?是用php的, limit 只能在mysql中使用,ms sql 不认,
晕,今天找了ms sql的好多资料都没找到实现办法,
求高手赐教!!!
...全文
188 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
fatkenme 2004-12-07
raid79(山鹰) 有料道!!!
以上程序我仔细看了一下,应该没有问题!
太感谢了!!!
我就是怕要把查询记录全部读到数组中,再通过访问数组下标实现分页,(数组还要用全程变量或开 session,)那就痛苦了 !!
想不到还有一个 mssql_date_seek 函数,实在是太好了。。。。!!
可以再请教一下,如果是用odbc连接ms sql,改如何实现以上功能?
回复
raid79 2004-12-07
//实现分页模块
//每页显示的记录数
$gPageSize=15;
$query = "select * from news_news order by ID DESC";
//执行查询语句
$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)

{

exit;

};

//得到最大页码数MaxPage

$MaxPage = (int)ceil($nNumRows/$gPageSize);

if((int)$page > $MaxPage)

$page=$maxPage;

echo "<font size=2> 共有";echo $nNumRows;echo "条记录,每页显示";

echo "15条,共";echo $MaxPage;echo "页,当前第";echo $page;echo "页</font>";


//顶部分页显示
echo "<div align=right><font size=2>";

//首页和上一页的链接

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> ";

}

echo "</font></div>";

//========================================================================

//根据偏移量($page - 1)*$gPageSize,运用mssql_data_seek函数得到要显示的页面

if( mssql_data_seek($rresult,($page-1)*$gPageSize) )

{

$i=0;

//循环显示当前纪录集

for($i;$i<$gPageSize;$i++)

{

//得到当前纪录,填充到数组$arr;

$arr= mssql_fetch_array($rresult);

if($arr)

{
?>
在此加入表格代码,循环列出每条信息
<?php
}

}

}

//=============================================================================

//底部分页显示
?>
<tr>
<td> </td>
<td><div align=right><font size="2">
<?php

//首页和上一页的链接

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> ";

}
?>
回复
fatkenme 2004-12-07
select top $limit .....
是从开始记录读取 $limit 条记录,
怎样实现从中间记录读取呢?

根据页数计算$LimitEndNum
select top $Limit * from (select top $Limit * from (select top $LimitEndNum * from table order by id desc) a order by id asc) b order by id desc

再多嵌套几个 select top 都没法实现从中间读取一段记录!!!!!!!
回复
raid79 2004-12-07
mssql_data_seek
回复
itian 2004-12-07
根据页数计算$LimitEndNum
select top $Limit * from (select top $Limit * from (select top $LimitEndNum * from table order by id desc) a order by id asc) b order by id desc
回复
相关推荐
发帖
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
帖子事件
创建了帖子
2004-12-07 04:09
社区公告
暂无公告