我有一个评论系统与分页,每页10。我想对评论做固定链接。我希望能够让脚本计算出评论在哪个页面上,而不必指定页码,也不需要过大的查询或处理。例如,指向第5页评论的链接将在评论第5页打开浏览器,然后#滚动到该评论(而不是在自己的页面上显示该评论)。
我曾想过使用两个mysql查询,一个选择所有CommentId,然后php array_search来查找结果中的位置,由此我可以计算出它在哪个页面上。第二个查询将得到所需的评论页面。不过,这似乎相当低效,特别是当有很多评论Ids需要提取的时候。
有人能建议一种更简单或更有效的方法吗?
发布于 2012-04-24 02:31:16
使用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指的是评论所在的博客/论坛帖子,$comment_id是你正在寻找的评论。
发布于 2012-04-24 02:30:35
如果你知道每页的评论数,而且没有变化,你应该能够从MySQL开始计数。如果你的浏览器perma-link中有comment_id,应该是这样的:
select
count(*)
from
comments c
where
comment_id < $comment_id
and
topic_id = $topic_id -- or whatever然后,在PHP中使用这个数字,您将能够计算在数据库中查找和显示哪个页面。
https://stackoverflow.com/questions/10285983
复制相似问题