我目前正在建立自己的社交网络,我有一个php问题,我不知道如何解决。
所以我的目标是显示用户自己和他的朋友发布的帖子,而如果你不是他们的朋友,他们的帖子将隐藏给你。 我做了很多研究试图找到答案以及实现答案,但似乎没有什么对我的剧本有效。
所以,这就是我的表格:
用户:密钥,ID,全名,用户名等...
帖子: id,feedusername,author,feedpost
分享(AKA朋友): id,userId1,userId2,status
目前,我正在使用while循环显示帖子。
while($feedarray = mysql_fetch_array($search)) {
*I pull the users post data here by using that fetch_array function and echo them out*
}
$ search SQL代码是这样的:
$search = mysql_query("SELECT * FROM posts ORDER BY id DESC LIMIT 0,20");
目前,无论您是朋友还是与该用户不是朋友,都会显示所有帖子。这不是我想要的。
那么,如何显示自己的帖子和朋友帖子?如果你的朋友不是说“a”,那你怎么不把“a”发的帖子显示给不是“a”的朋友呢?
换句话说,如果混乱(userId1)是具有max(userId2)的朋友并且他们的状态等于2(如果status等于2,则他们是朋友。如果它是1,则朋友请求待定。) 如何显示自己的帖子(混乱的帖子)和Max的帖子?如果此记录不存在或状态等于1,我将无法看到Max的帖子。
希望你明白我在说什么,谢谢你的时间。
谢谢!
ChaoticS
答案 0 :(得分:0)
所以根据你所说的我收集你的自己的帖子会涉及到以下内容:
SELECT *
FROM posts
WHERE author = @MyUserId
所以,鉴于我们现在想要朋友,想想你如何找回朋友。这将是:
SELECT userid2
FROM shares
WHERE userid1 = @MyUserId
AND status = 2
(并且可能必须进行另一个查询来反转userid1 / userd2列,具体取决于您的表的设置方式)。所以,鉴于此,这是两种形式相结合的问题:
SELECT *
FROM posts
WHERE author = @MyUserID
OR author IN (
SELECT userid2
FROM shares
WHERE userid1 = @MyUserId
AND status = 2
)
你可以继续扩展你如何使用子选择等更具包容性/排他性,但我会把它留给你。如果您仍有问题请给我留言,我会尽力帮助。