如果这个问题已被提出或回答,我真的很抱歉,但我似乎无法找到我需要的东西。
我已经构建了其他所有部分,我唯一的问题是围绕内联评论。我想做类似Facebook所做的事情,他们用一个按钮来显示所有y评论的x评论。
然而,我能看到的唯一两种方法是:
其中任何一个似乎都不是一个好的解决方案;然而,因为它们都涉及巨大的资源浪费。
有没有人有可能实施此建议?
答案 0 :(得分:1)
SELECT * FROM comments_table WHERE article_id = {something} LIMIT {no_of_comments_per_page} SORT BY date DESC
这是一个非常简单但功能强大的评论查询。
实际代码
<?php
$sql = "SELECT * FROM comments_table WHERE article_id = 24 LIMIT 40 SORT BY date DESC";
$data = mysql_query($sql);
$comments = mysql_fetch_assoc($data);
foreach($comments as $comment){
$ct++;
echo "ID: {$ct}";
echo "<br />";
echo "Comment: {$comment["comment"]} by {$comment["user"]}";
echo "Date: {$comment["date"]}";
}
?>
答案 1 :(得分:0)
我使用SELECT,并在子句中添加了LIMIT,按DESC顺序按'id'排序。类似于......“SELECT * FROM comments LIMIT 3 DESC”
当用户点击“加载更多评论”按钮时,执行某种类型的AJAX请求,其查询类似于“SELECT * FROM comments LIMIT X,3 DESC”
答案 2 :(得分:0)
我会做一个JOIN
,然后对数据进行排序。类似的东西:
SELECT articles.id, articles.text, articles.date,
comments.id, comments.text, comments.date
FROM articles LEFT JOIN comments ON (comments.article_id = articles.id)
WHERE {some criteria} ORDER BY articles.date, comments.date
具有隐藏的额外注释的性能问题实际上可以忽略不计 - 并且当他们点击“看到所有”按钮时,你没有额外的开销来加载其他注释的ajax请求 - 你可以只是隐藏它们,然后立即显示它们。
如果你只想要前40个帖子,你必须将这个条件添加到where子句中(事实上,你可以包装你正在做的任何过滤):
WHERE articles.id IN (SELECT id FROM articles ORDER by articles.date LIMIT 40)