我有一个分页评论系统,每页10个。我想对评论进行永久链接。我希望能够让脚本找出评论所在的页面,而无需指定页码,也不需要过多的查询或处理。因此,例如,第5页上的评论链接将在评论页面5上打开浏览器并#scrolled到评论(而不是在其自己的页面上显示评论)。
我曾经想过使用2个mysql查询,一个SELECT所有CommentId然后是php array_search
来查找结果中的位置,从中我可以计算它将在哪个页面上。第二个查询将获得所需的注释页面。这似乎效率很低,特别是如果有很多评论需要提及。
有人能建议更简单或更有效的方法吗?
答案 0 :(得分:3)
如果您知道每页的评论数量并且没有改变,那么您应该可以从MySQL算起来。如果您的浏览器perma-link中包含comment_id,则类似于:
select
count(*)
from
comments c
where
comment_id < $comment_id
and
topic_id = $topic_id -- or whatever
然后在PHP中使用此编号,您将能够计算要在数据库中查找和显示的页面。
答案 1 :(得分:3)
使用SQL可以非常轻松地完成所有操作,假设comment_id
是某种形式的自动递增数字,这应该返回确切的页面:
SELECT FLOOR(COUNT(*)/$comments_per_page) FROM COMMENTS
WHERE ENTRY_ID = $entry_id AND comment_id < $comment_id;
当然,这假设“平坦的评论”(没有父子关系)。显然,$comments_per_page
是每个页面上显示的评论数量(这可能只是一个常量),$entry_id
指的是评论的博客/论坛帖子和{{1}是你要找的评论。