文章系统中“上篇、下篇”效果的制作

 曾经有很多朋友在问我,It365cn.com文章中实现“上一篇”、“下一篇”的效果如何实现?因为一直忙于写It365cn的论坛,所以未能及时给朋友们提供站内的代码。适逢空闲,工作之余,简单的来介绍一下实现的ASP代码。
  以前曾经参考过一个网站的源码,是使用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 %>
<!--程序结束-->

  水平有限,可能在代码上还有些不足之处,如出现Bug,请及时给予指正。如有疑问之处,请登录http://www.it365cn.com/bbs发贴询问。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 PHP ,可以使用 MySQL 数据库来实现上一篇下一篇功能。 假设我们有一张名为 `articles` 的文章表,其有 `id`、`title`、`content` 等字段,我们可以通过以下 SQL 语句来获取上一篇和下一篇文章的信息: ```sql -- 获取上一篇文章 SELECT * FROM articles WHERE id < $current_id ORDER BY id DESC LIMIT 1; -- 获取下一篇文章 SELECT * FROM articles WHERE id > $current_id ORDER BY id ASC LIMIT 1; ``` 其,`$current_id` 表示当前文章的 ID。 在 PHP ,我们可以使用 PDO 扩展来连接 MySQL 数据库,并执行上述 SQL 语句,实现上一篇下一篇功能。示例代码如下: ```php <?php // 连接 MySQL 数据库 $dsn = 'mysql:host=localhost;dbname=my_db'; $username = 'my_username'; $password = 'my_password'; $db = new PDO($dsn, $username, $password); // 获取当前文章的 ID $current_id = $_GET['id']; // 获取上一篇文章 $prev_article = $db->query("SELECT * FROM articles WHERE id < $current_id ORDER BY id DESC LIMIT 1")->fetch(PDO::FETCH_ASSOC); // 获取下一篇文章 $next_article = $db->query("SELECT * FROM articles WHERE id > $current_id ORDER BY id ASC LIMIT 1")->fetch(PDO::FETCH_ASSOC); ?> ``` 在上述代码,我们首先使用 `PDO` 类连接 MySQL 数据库,然后通过 `$_GET['id']` 获取当前文章的 ID。接着,我们分别执行 SQL 语句获取上一篇和下一篇文章的信息,并将结果保存在 `$prev_article` 和 `$next_article` 变量。最后,我们可以使用这些变量来输出上一篇和下一篇文章的链接、标题等信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值