2013-07-31 53 views
0

我想要將用戶朋友列表顯示在他們的個人資料頁面上,但是我可以顯示的是用戶個人資料的名稱,而不是他們的任何朋友或個人資料圖片。無法獲取要顯示的朋友列表

我的表是因爲這樣

USERS 
user_id 
username 
profile 

FRIENDS 
user_id 
friend_id 
accepted (ENUM 0 for no, 1 for accepted). 

這裏是我使用的代碼,我還沒有開始將我的網站還沒有mysqli的,所以是的,我知道代碼是當前脆弱。

<?php 
$user_id = $_SESSION['user_id']; 

$sql = "SELECT friends.id, friends.user_id, friends.friend_id, friends.accepted, users.user_id, users.username, users.profile 
       FROM `friends` 
       LEFT JOIN `users` on users.user_id = friends.user_id OR users.user_id = friends.friend_id 
       WHERE friends.friend_id = $user_id OR friends.user_id = $user_id 
       AND users.user_id != $user_id AND friends.accepted = '1' OR friends.friend_id = $user_id AND friends.accepted = '1'"; 

$result = mysql_query($sql); 
?> 
<img src="<? echo $profile; ?>"><? echo $username; ?> 

感謝您的任何提示。

+0

什麼$輪廓返回? –

+0

你試過轉儲$ profile嗎? –

+0

配置文件是在用戶表中保存配置文件圖片的字段。但它只是返回「」 – user2571547

回答

1

試試這個。

<?php 
$friends_result = mysql_query(" 
    SELECT 
     users.`username` AS username 
    FROM 
     friends 
    LEFT JOIN 
     users 
    ON 
     users.`user_id` = friends.`user_id` 
    OR 
     users.`user_id` = friends.`friend_id` 
    AND 
     users.`user_id` != '" . $user_id . "' 
    WHERE 
     friends.`user_id` = '" . $user_id . "' 
    OR 
     friends.`friend_id` = '" . $user_id . "'"); 


while($friends_array = mysql_fetch_array($friends_result)) 
{ 
    echo $friends_array['username'] . "<br />"; 
} 
?> 
+0

謝謝,這工作!它顯示用戶名,我會自己找出配置文件。 – user2571547

0

嘗試使用此查詢

SELECT friend_id as id FROM `friends` where user_id=$user_id and accepted=1 union select user_id as id from friends where friend_id=$user_id and accepted=1 

上面的查詢將返回朋友ID

+0

謝謝我試過這個,但在Admin的個人資料上,它仍然只顯示」Admin「而沒有圖片,而」Friend「在輔助個人資料朋友 – user2571547

0

嘗試

$result = mysql_query($sql) or die(mysql_error()); 

編輯命令,並看到,如果你得到任何錯誤?

如果您在語法上遇到任何錯誤,請糾正它。

+0

我得到了「無列狀態」意識到它需要被「接受」,現在沒有錯誤信息。 – user2571547

+0

並且您是否獲得$ profile的值? –

+0

正確,只是獲取名稱部分,這很奇怪,因爲用戶名和配置文件都存儲在用戶中,但只有用戶表中的一個字段正在顯示。 – user2571547

0

假設fiends表中的user_id和friend_id是users表中user_id的外鍵,那麼關係將是「用戶可以有一個或多個朋友」。下面的查詢會給你特定用戶的朋友ID,

SELECT friend_id from friends f 
JOIN users u ON f.user_id = u.user_id 
WHERE u.user_id = $user_id AND f.accepted = 1 
-1

$結果= mysql_query($的SQL)或死亡(mysql_error());

嘗試一下,並給我們輸出。

Regards

+0

輸出是「管理員」沒有錯誤,沒有配置文件圖像,只是我測試的配置文件的用戶名,如果我嘗試在名爲「朋友」的帳戶上顯示沒有圖像的「朋友」。 – user2571547

+0

@ user2629980如果你想評論,請參閱評論,如果評論已經做出,然後upvote它而不是複製並粘貼 –

0

嘗試下面的查詢

SELECT users.id as userid, firstname, lastname, username,profile_id,friends.accepted FROM users RIGHT JOIN (SELECT friend_id as id,accepted FROM `friends` where user_id=$user_id and accepted=1 union select user_id as id,status from friends where friend_id=$user_id and accepted=1) friends ON users.id = friends.id;