如何实现“上一个”和“下一个”?

时间:2022-12-04 15:00:52
ASP+SQL SERVER2000中,数据库的ID号是唯一的,自动编号,终级页面是通过ID号来标识别读取,比如:READ.ASP?ID=<%=RS("ID")
现在我想在该页面中加入两个连接“上一个”和“下一个”,表示上一条记录和下一条记录,该怎么实现?比如ID:1 2 3 4 5 7 8 10  12  14 就是增长,但是可能某个ID号已经被删除(上面列表中少了6 9 11 13等),如果我读取的当前页面ID号是3,那么上一个”和“下一个”分别是2和4 ;但是读取的当前页面ID号是10,那么上一个”和“下一个”分别是8和12..................................请问该怎么实现?

11 个解决方案

#1


sqlstr="select top 1 * from table where id>"& rs("ID")

#2


ID:1 2 3 4 5 7 8 10  12  14 这里的序号用for循环来做不行吗?

#3


用分页技术就可以了,方便。把每页大小分成1就搞定了。

#4


sqlstr="select max(id) as id from table where id<"& rs("ID")

#5


sql="select * from table order by id"
rs.moveNext 下一条
rs.movePrevious 上一条

#6


MoveNext方法:移至下一条记录。 
MovePrevious方法:移至上一条记录。

#7


以前曾经参考过一个网站的源码,是使用ID+1和ID-1的办法来判断上下篇的。在实际使用过程中,发现一个问题:当删除数据库中的一篇文章时,就会造成ID不连续,如果用ID+1和ID-1来判断就会出现找不到记录。所以程序并不是非常的完美。
  在我们所介绍的ASP代码中,是通过查询大于当前ID的第一条记录来找出下一篇的ID,查询小于当前ID的第一条记录来找出上一篇的ID,这样就算ID不连续也可以正常显示了。(程序代码也是参阅过经典论坛相关贴子提示所制作的)
  简单介绍方法:
  数据表articles中有id(文章ID)、title(文章标题)、content(文章内容)、addtime(文章发布时间)等其它各相关字段。
<!--数据库连接文件-->
<!--#include file="conn.asp"-->
<%
`定义一个nextrs函数来找出下一篇的ID  
function nextrs
nextrsd=server.CreateObject("adodb.recordset")
sql="select top 1 * from articles where id>"&a1&" order by id"
set nextrsd=conn.execute(sql)
if nextrsd.eof then
response.Write "下一篇:这是本分类下的最后一篇文章"
else
a2=nextrsd("id")
response.Write "下一篇:<a href='article.asp?id="&a2&"'>"&nextrsd("title")&"</a>"
end if
end function 

`定义一个backrs函数来找出上一篇的ID
function backrs
backrsd=server.CreateObject("adodb.recordset")
sql="select top 1 * from articles where id<"&a1&" order by id desc"
set backrsd=conn.execute(sql)
if backrsd.eof then
response.Write "上一篇:这是本分类下的第一篇文章"
else
a0=backrsd("id")
response.Write "上一篇:<a href='article.asp?id="&a0&"'>"&backrsd("title")&"</a>"
end if
end function

`取得传递过来的文章ID
ID=request("id")
sql="select * from articles where id="&id
set rs=conn.execute(sql)
a1=rs("id")
%>
<!--显示文章内容..............................-->
<!--调用前面定义的显示上一篇文章的函数--><% backrs %><br>
<!--调用前面定义的显示下一篇文章的函数--><% nextrs %>
<!--程序结束-->

#8


http://www.dwww.cn/new/200592194124208.html
详见!!

#9


select top 1 * from mytable where id<'"&rs("id")&"' => 上一条的id
select top 1 * from mytable where id>'"&rs("id")&"' => 下一条的id

#10


下一个:sqlstr="select top 1 * from table where id>"& rs("ID")
上一个:sqlstr="select top 1 * from table where id<"& rs("ID")

#11


谢谢各位,尤其谢谢 wangyingdong。结帖!

#1


sqlstr="select top 1 * from table where id>"& rs("ID")

#2


ID:1 2 3 4 5 7 8 10  12  14 这里的序号用for循环来做不行吗?

#3


用分页技术就可以了,方便。把每页大小分成1就搞定了。

#4


sqlstr="select max(id) as id from table where id<"& rs("ID")

#5


sql="select * from table order by id"
rs.moveNext 下一条
rs.movePrevious 上一条

#6


MoveNext方法:移至下一条记录。 
MovePrevious方法:移至上一条记录。

#7


以前曾经参考过一个网站的源码,是使用ID+1和ID-1的办法来判断上下篇的。在实际使用过程中,发现一个问题:当删除数据库中的一篇文章时,就会造成ID不连续,如果用ID+1和ID-1来判断就会出现找不到记录。所以程序并不是非常的完美。
  在我们所介绍的ASP代码中,是通过查询大于当前ID的第一条记录来找出下一篇的ID,查询小于当前ID的第一条记录来找出上一篇的ID,这样就算ID不连续也可以正常显示了。(程序代码也是参阅过经典论坛相关贴子提示所制作的)
  简单介绍方法:
  数据表articles中有id(文章ID)、title(文章标题)、content(文章内容)、addtime(文章发布时间)等其它各相关字段。
<!--数据库连接文件-->
<!--#include file="conn.asp"-->
<%
`定义一个nextrs函数来找出下一篇的ID  
function nextrs
nextrsd=server.CreateObject("adodb.recordset")
sql="select top 1 * from articles where id>"&a1&" order by id"
set nextrsd=conn.execute(sql)
if nextrsd.eof then
response.Write "下一篇:这是本分类下的最后一篇文章"
else
a2=nextrsd("id")
response.Write "下一篇:<a href='article.asp?id="&a2&"'>"&nextrsd("title")&"</a>"
end if
end function 

`定义一个backrs函数来找出上一篇的ID
function backrs
backrsd=server.CreateObject("adodb.recordset")
sql="select top 1 * from articles where id<"&a1&" order by id desc"
set backrsd=conn.execute(sql)
if backrsd.eof then
response.Write "上一篇:这是本分类下的第一篇文章"
else
a0=backrsd("id")
response.Write "上一篇:<a href='article.asp?id="&a0&"'>"&backrsd("title")&"</a>"
end if
end function

`取得传递过来的文章ID
ID=request("id")
sql="select * from articles where id="&id
set rs=conn.execute(sql)
a1=rs("id")
%>
<!--显示文章内容..............................-->
<!--调用前面定义的显示上一篇文章的函数--><% backrs %><br>
<!--调用前面定义的显示下一篇文章的函数--><% nextrs %>
<!--程序结束-->

#8


http://www.dwww.cn/new/200592194124208.html
详见!!

#9


select top 1 * from mytable where id<'"&rs("id")&"' => 上一条的id
select top 1 * from mytable where id>'"&rs("id")&"' => 下一条的id

#10


下一个:sqlstr="select top 1 * from table where id>"& rs("ID")
上一个:sqlstr="select top 1 * from table where id<"& rs("ID")

#11


谢谢各位,尤其谢谢 wangyingdong。结帖!