【问题标题】:How to find "page" number for a comment in a paginated comment system? [closed]如何在分页评论系统中查找评论的“页码”? [关闭]
【发布时间】:2012-05-04 09:15:21
【问题描述】:

我有一个带有分页的评论系统,每页 10 个。我想对 cme​​ts 进行永久链接。我希望能够让脚本找出评论所在的页面,而无需指定页码,也无需过大的查询或处理。因此,例如,第 5 页上的评论链接将在评论页面 5 上打开浏览器并#scrolled 到评论(而不是在其自己的页面上显示评论)。

我曾想过使用 2 个 mysql 查询,一个 SELECT all CommentId 然后 php array_search 在结果中找到位置,然后我可以计算它会在哪个页面上。第二个查询将获得所需的 cmets 页面。这似乎非常低效,特别是如果有很多 cmets Id 需要提取。

谁能提出更简单或更有效的方法?

【问题讨论】:

    标签: php mysql pagination


    【解决方案1】:

    这一切都可以用 SQL 轻松完成,假设 comment_id 是某种形式的自动递增数字,这应该返回确切的页面:

    SELECT FLOOR(COUNT(*)/$comments_per_page) FROM COMMENTS 
       WHERE ENTRY_ID = $entry_id AND comment_id < $comment_id;
    

    当然,这是假设“平面 cmets”(没有父子关系)。显然,$comments_per_page 是每个页面上显示的 cmets 的数量(这可能只是一个常数),$entry_id 指的是发表评论的博客/论坛帖子,$comment_id 是您的评论正在寻找。

    【讨论】:

    • 感谢两位的回答:)
    【解决方案2】:

    好吧,如果您知道每页的 cmets 数并且没有改变,那么您应该能够从 MySQL 中计算。如果您的浏览器永久链接中有comment_id,则类似于:

    select
        count(*)
    from
        comments c
    where
        comment_id < $comment_id
    and
        topic_id = $topic_id -- or whatever
    

    然后使用 PHP 中的这个数字,您将能够计算出要在数据库中查找和显示的页面。

    【讨论】:

      猜你喜欢
      • 2018-07-12
      • 1970-01-01
      • 2020-12-27
      • 2015-04-04
      • 2014-07-11
      • 1970-01-01
      • 2011-10-24
      • 1970-01-01
      • 2015-10-02
      相关资源
      最近更新 更多