gpt4 book ai didi

php - 如何在社交网站上获取我 friend 的最新评论

转载 作者:行者123 更新时间:2023-11-29 00:58:04 26 4
gpt4 key购买 nike

我正在构建一个社交网站,例如 Facebook。就像某些部分一样。我使用了 PHP 和 MySQL。我的索引页面有问题,我会在其中显示我 friend 的所有最新评论操作。

让我扩展数据库。

表注释:

comment_id 
content
datetime
author_id //who created this comment
profile_id //the user_id of the owner profile which this comment commented on.
parent_id //the comment id which is parent of this comment id. if the parent_id = 0 , so this comment is the main comment.

表用户:

user_id
...some user info fields...

餐 table 友谊

user_id // who added another as friend.
friend_id // who was added as friend by another.
status // the status of this friendship, 0 is invited and 1 is alreay friend (accepted)

首先,我会得到我所有的 friend ID。

$query = "select DISTINCT friend_id as friend from friendship where user_id = ".$user_id." and status = 1
union
select DISTINCT user_id as friend from friendship where friend_id = ".$user_id." and status = 1
";

然后我会把所有的 friend id放到一个数组中。

foreach($total_friends as $each_friend){
$all_friend_id[] = $each_friend['friend'];
}

现在我有一个 friend ID 数组。然后我试图获得有限的最新评论。无论是子评论还是主评论,我都会收到有限的最新评论。

"select * from comments where author_id IN ('".implode("','",$all_friend_id)."' order by datetime desc limit 0 , 20";

现在我有一个已排序的最新子评论和主评论数组(按日期时间排序),如果这是一个子评论,我将获取该评论的主评论,然后获取所有子评论。如果这是一条主要评论,我将获得所有子评论。

最后我会得到一个包含所有主要和次要评论的数组,这些评论按开头排序。这是一个图像演示。 http://rongcon.info/demo/abc/newst.PNG

当一个主评论中有多个最新的子评论时,就会出现重复主评论的问题。但我可以轻松修复它。

我的目标达成了。但是当我试图通过 AJAX 获取“旧评论”时出现的问题。

问题出在较旧的评论中,有时我会在第一个请求中显示的主评论中得到一个子评论。所以我会显示一个重复的主要评论,这是一个我需要修复的错误!

我尝试了 2 种方法来修复,但我无法处理所有错误。

  1. 我将在 JavaScript 中保存所有显示的主评论 ID,然后当我请求较旧的评论时将其发送到 AJAX,在较旧评论的查询中,我将阻止主评论和子评论拥有它的父评论将 ID 作为显示的主要评论 ID。所以我可以防止这个错误。

但是当我试图获得越来越多的旧评论时。显示的主要评论 ID 的数量会很长,我担心这会对性能造成很大的影响。

  1. 我使用显示主题的逻辑在论坛中有最新回复。我会在每个主要评论中添加一个“last_comment_date”。然后我将只在主评论中获得最新评论,而不是子评论。所以这是基本的分页逻辑,当我显示较旧的评论时,我不会收到重复的评论。

但是我只能在我的 friend 资料中获取最新的主评论和子评论,而无法获取有我 friend 最新子评论的主评论。我又摔倒了!

所以我要为这个页面寻求一个最佳解决方案。

最佳答案

可能不是选择所有评论(包括子评论),而是首先只选择父评论...(其中 parent_id=0)。

select * from comments where parent_id=0 and author_id IN ('".implode("','",$all_friend_id)."' order by datetime desc limit 0 , 20

然后foreach parent,去获取子评论,这样当从ajax中获取旧的评论时,你不会得到没有父评论的子评论片段。

虽然它可能会更慢......

关于php - 如何在社交网站上获取我 friend 的最新评论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5061751/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com