2011-10-09 31 views
0

我目前正在做我自己的社交網絡,我有一個php問題,我不知道如何解決。顯示用戶所發的帖子,如果該用戶是他/她的朋友用PHP

所以我的目標是顯示用戶自己和他的朋友發佈的帖子,而如果你不是他們的朋友,他們的帖子將隱藏給你。 我已經做了很多研究,試圖找到答案和實現答案,但似乎沒有任何工作對我的腳本。

所以,這裏就是我的表如下所示:

用戶:鍵,ID,全名,用戶名等..

帖子: ID,feedusername,作者,feedpost

shares(AKA friends): 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* 
} 

而且$搜索SQL代碼是這樣的:

$search = mysql_query("SELECT * FROM posts ORDER BY id DESC LIMIT 0,20"); 

此刻,如果你的朋友或者不是朋友與該用戶這將顯示所有的職位無關。這不是我想要的。

那麼,如何顯示我自己的帖子和我的朋友帖子?如果你不是朋友,可以說「a」,那麼你怎麼不把「a」發佈的帖子顯示給不是「a」的朋友?

換句話說,如果混沌(userId1)是max(userId2)的朋友,並且它們的狀態等於2(如果狀態等於2,那麼它們是朋友,如果它是1,那麼朋友請求正在等待。 ) 如何顯示我自己的帖子(混亂的帖子)和馬克西的帖子?而如果此記錄不存在或狀態等於1,我將無法查看Max的帖子。

希望你明白我在說什麼,並感謝你的時間。

謝謝!

ChaoticS

回答

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 
) 

您可以繼續擴大你如何使用子查詢等方面更具包容性/排他性的,但我會離開,到您。如果您仍然無法給我留言,我會盡我所能提供幫助。

+0

p.s. 「status」包含哪些其他值?假設這是一個int,那麼使用['enum'](http://dev.mysql.com/doc/refman/5.0/en/enum.html)或者可能僅僅是['bit'] (http://dev.mysql.com/doc/refman/5.1/en/bit-field-values.html)。 –

+0

狀態應該只包含1或2.並且謝謝!目前,我正在嘗試將此代碼應用於我的代碼,並顯示我的朋友帖子,但是,我似乎沒有看到我自己的帖子。 – ChaoticS

+0

@ChaoticS:那麼,你如何檢索自己的帖子?我假設你知道查看該頁面的人員ID,因此將作者與其匹配是他們自己的。一旦完成了,它就會添加一個'OR作者IN(...)'並且還回他們的朋友。 –

相關問題