显示我关注的用户的帖子,但也显示我的帖子

时间:2016-04-30 20:39:23

标签: php mysql news-feed

我正在一个人们可以互相关注的小网站上工作。网站上有新闻源,用户可以看到他们关注的其他用户的更新。问题是,我只能看到其他用户的帖子而不是我的帖子。我希望当前用户能够在其他用户帖子中查看他的帖子。像Facebook Wall这样的东西。 我已经尝试了大量的差异查询和PHP,但我只有其他用户发布或当我设法撤出我的帖子时,每个跟随我的用户都有公告帖。

我有3个桌子'成员',' Post'和'关注'成员表包含UserID,Name和Last Name。 Post表保存UserID(表中的FromID)索引到成员UserID和用户的帖子。在下表中有3列FollowID,Followed和Follower Followed和Follower是成员UserID的索引。

目前我使用该查询:

$query= "SELECT Post.*, members.*, follow.* FROM Post
 INNER JOIN members ON Post.FromID=members.UserID 
 LEFT JOIN follow ON members.UserID=follow.Followed
 WHERE Post.FromID='$user' OR follow.FollowerID='$user'
 ORDER BY Post.date DESC, Post.time DESC";

$ user是当前登录用户的UserID。  该查询返回我想要的所有帖子,但问题是我的帖子是跟随我的每个用户显示/ n次。

我真的很感激那个能给我一些方向的人的好意。谢谢

2 个答案:

答案 0 :(得分:0)

我认为这个查询可能更容易理解:

$query = "SELECT * FROM Post,members,follow 

WHERE 

Post.FromID=members.UserID
AND
members.UserID=follow.Followed


AND (    Post.FromID='$user' OR  follow.FollowerID='$user')    

ORDER BY Post.date DESC, Post.time DESC";

答案 1 :(得分:0)

问题出在你的$用户身上。目前发生的事情是你在where子句中有OR条件。并且您试图提取您的数据或您的关注者数据。

我的解决方案是从您的查询中删除$ user。因此,您将只有关注者数据列表。对您的帖子进行不同的查询,然后按日期时间显示排序时间戳,这样您就可以将帖子与其他关注者一起排序。

让您的帖子和关注者在一个查询中发帖。

使用union。喜欢:

(查询您的帖子ORDER BY日期) 联盟 (查询关注者帖子ORDER BY日期);

同时检查w3schools中的UNION用法。

希望这有帮助