【问题标题】:Need to add a next previous single article navigator in php based CMS需要在基于 php 的 CMS 中添加下一篇之前的单篇文章导航器
【发布时间】:2013-07-08 23:54:03
【问题描述】:

我建立了一个简单的文章网站,其中列出了不同类别的文章。我什至实现了一个简单的分页系统,访问者可以在其中浏览文章列表。然而,客户有另一个要求。他们希望在阅读文章时[不在文章列表页面上] - 应该有一个“下一篇文章”和“上一篇文章”链接,链接到文章列表中的下一篇/上一篇文章。

考虑到列表可以进行不同的排序,因此用于阅读单个文章的下一个和上一个链接也应该相应地反映如何实现这一点。我相信它有点像迷你分页。

是否可以在单个 sql 查询中获取下一行和上一行,尤其是在选择单个元组时?

【问题讨论】:

    标签: php sql mysql pagination


    【解决方案1】:
    Previous ID: 
    SELECT id FROM $mytable WHERE id < $id ORDER BY ID DESC LIMIT 1;
    Next ID: 
    SELECT id FROM $mytable WHERE id > $id ORDER BY ID ASC LIMIT 1;
    

    在 $id 之后,您应该添加您在页面中使用的过滤器 :)

    【讨论】:

    • 我正在寻找可以使用一个 sql 查询执行的东西
    【解决方案2】:
    SELECT id FROM $mytable WHERE id < $id ORDER BY ID DESC LIMIT 1;
    UNION 
    SELECT id FROM $mytable WHERE id = $id ORDER BY ID ASC LIMIT 1;
    UNION 
    SELECT id FROM $mytable WHERE id > $id ORDER BY ID ASC LIMIT 1;
    

    你会得到所有三个id的

    【讨论】:

      【解决方案3】:

      如果您希望在一个 SQL 行中执行所有内容,同时考虑到列表可以以不同方式排序,则必须使用 SESSION/COOKIE 来存储提交时的 SQL 行。然后,您可以将 WHERE 之后的条件附加到@Eddsstudio 下面建议的内容:

      SELECT id FROM $mytable WHERE id < $id ORDER BY ID DESC LIMIT 1;
      Next ID: 
      SELECT id FROM $mytable WHERE id > $id ORDER BY ID ASC LIMIT 1;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-22
        • 1970-01-01
        • 1970-01-01
        • 2019-11-14
        相关资源
        最近更新 更多