以前曾经参考过一个网站的源码,是使用ID+1和ID-1的办法来判断上下篇的。在实际使用过程中,发现一个问题:当删除数据库中的一篇文章时,就会造成ID不连续,如果用ID+1和ID-1来判断就会出现找不到记录。所以程序并不是非常的完美。
  在我们所介绍的ASP代码中,是通过查询大于当前ID的第一条记录来找出下一篇的ID,查询小于当前ID的第一条记录来找出上一篇的ID,这样就算ID不连续也可以正常显示了。(程序代码也是参阅过经典论坛相关贴子提示所制作的)

  简单介绍方法:
  数据表articles中有id(文章ID)、title(文章标题)、content(文章内容)、addtime(文章发布时间)等其它各相关字段。

  1. <!--数据库连接文件-->
  2. <!--#include file="conn.asp"-->
  3. <%
  4. `定义一个nextrs函数来找出下一篇的ID  
  5. function nextrs
  6. nextrsd=server.CreateObject("adodb.recordset")
  7. sql="select top 1 * from articles where id>"&a1&" order by id"
  8. set nextrsd=conn.execute(sql)
  9. if nextrsd.eof then
  10. response.Write "下一篇:这是本分类下的最后一篇文章"
  11. else
  12. a2=nextrsd("id")
  13. response.Write "下一篇:<a href='article.asp?id="&a2&"'>"&nextrsd("title")&"</a>"
  14. end if
  15. end function
  16.  
  17. `定义一个backrs函数来找出上一篇的ID
  18. function backrs
  19. backrsd=server.CreateObject("adodb.recordset")
  20. sql="select top 1 * from articles where id<"&a1&" order by id desc"
  21. set backrsd=conn.execute(sql)
  22. if backrsd.eof then
  23. response.Write "上一篇:这是本分类下的第一篇文章"
  24. else
  25. a0=backrsd("id")
  26. response.Write "上一篇:<a href='article.asp?id="&a0&"'>"&backrsd("title")&"</a>"
  27. end if
  28. end function
  29.  
  30. `取得传递过来的文章ID
  31. ID=request("id")
  32. sql="select * from articles where id="&id
  33. set rs=conn.execute(sql)
  34. a1=rs("id")
  35. %>
  36. <!--显示文章内容..............................-->
  37. <!--调用前面定义的显示上一篇文章的函数--><% backrs %><br />
  38. <!--调用前面定义的显示下一篇文章的函数--><% nextrs %>
  39. <!--程序结束-->


无觅相关文章插件,快速提升流量