如果该用户是他/她与PHP的朋友,则显示用户发布的帖子

时间:2011-10-09 02:14:18

标签: php mysql

我目前正在建立自己的社交网络,我有一个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

1 个答案:

答案 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
  )

你可以继续扩展你如何使用子选择等更具包容性/排他性,但我会把它留给你。如果您仍有问题请给我留言,我会尽力帮助。