获取朋友的帖子

时间:2014-12-29 06:01:25

标签: php mysql mysqli

我正在建立一个社交网络平台。而我只是想知道一种过滤掉用户朋友帖子的方法。

目前,我过滤帖子的方式是选择所有帖子,但只显示来自用户firend的那些帖子,如下所示:

$select = $con->query("SELECT * FROM posts ORDER BY timestamp DESC");


while($postassoc = $con->fetch_assoc()){


$postby = $postassoc['user'];
$friendof = $con->query("SELECT id FROM friends WHERE 'from'='$user' AND 'to' ='$postby' OR 'to'='$postby' AND 'from'='$user' AND 'auth'='1'"); 
If($friendof != 0){
//show post
}

}

假设没有错误,从长远来看,这种方式将耗费大量时间。有没有更好更有效的方法?

2 个答案:

答案 0 :(得分:1)

假设你的朋友表是这样的:table:friends

id user_id   friend_id
1    22        35

现在你的帖子表可能就像这张表:帖子

id  user_id  post_content   post_date
1     35        hbsdhdhs      25-Dec

现在您可以使用联接来过滤朋友的帖子

$select = $con->query("SELECT posts.post_content FROM posts join friends on  posts.user_id=friends.friend_id  and friends.user_id =22");

答案 1 :(得分:0)

非常效率低下。您是否要通过社交网站上的每一个帖子来获取它?如果你有十亿用户怎么办?

你最好通过迭代所有朋友,拉出最相关的朋友,然后展示他们的活动。大型社交网站在相关性方面为您的朋友订购。 (你可以在'聊天'侧面板上看到这一点 - 你最好的朋友将成为最佳人选。

拥有用户后,本网站将进一步讨论查找活动的实施,例如: https://stackoverflow.com/a/205477/1752129