2011-09-22 71 views
1

我需要建立一個好友系統中打印數字的引用名字,但是我的循環總是跳過第一場比賽,有時它打印相同的名稱得到一個編號,另一個表

$result = mysql_query("SELECT * FROM tbusers INNER JOIN tbfriends ON tbusers.id = tbfriends.username_id"); 

while($row = mysql_fetch_array($result)) 
{ 
if ($row['username_id'] == 1)//the 1 will be a variable, username_id is in friends  
$count = $row['friendname'];//friendname is in friends  
if ($row['id'] == $count)//id is in users  
echo $row['username'];//username is in users 
} 

副本有人可以看到我的問題是什麼嗎?

回答

2

兩件事:

if ($row['username_id'] == 1) 

你應該把在你的SQL:

$result = mysql_query("SELECT username, friendname FROM tbusers INNER JOIN tbfriends ON tbusers.id = tbfriends.username_id where tbusers.id = ".$yourVariable); 

在您的查詢,用戶和朋友的聯繫,只能是平等的。

現在,這樣的:

$count = $row['friendname'];//friendname is in friends  
if ($row['id'] == $count)//id is in users  

等於

if ($row['id'] == $row['friendname']) 

這聽起來很簡單的錯誤。您將數字標識與名稱進行比較。而且,你的sql查詢已經回顧了用戶的所有朋友。在我在這裏展示的版本中,它僅檢索您感興趣的用戶的朋友。

最後,您打印(回顯)用戶的名稱,而不是朋友的名稱。在我看來,下面的代碼會做你想要什麼:

$result = mysql_query("SELECT friendname FROM tbfriends WHERE username_id = ".$yourUserVariable); 

while($row = mysql_fetch_array($result)) 
{ 
    echo $row['friendname']; // or better: echo $row['friendname'], '<br>'; 
} 

編輯:評論後...

所以if ($row['id'] == $row['friendname'])意味着用戶是自己的朋友。會發生嗎?

這段代碼應該打印出你想要的,朋友的名字。

/* 
$result = mysql_query(" 
    SELECT username as friend_name, 
      friendname as friend_id, 
      username_id as user_id 
    FROM tbusers INNER JOIN tbfriends ON tbusers.id = tbfriends.username_id 
    WHERE tbusers.id = ".$yourVariable); 

*/

$result = mysql_query(" 
    SELECT username as friend_name, 
      friendname as friend_id, 
      username_id as user_id 
    FROM tbusers INNER JOIN tbfriends ON tbusers.id = tbfriends.friendname 
    WHERE tbfriends.username_id = ".$yourVariable); 


while($row = mysql_fetch_array($result)) 
{ 
    echo $row['friend_name']; // or better: echo $row['friend_name'], '<br>'; 
} 
+0

對不起,我忘了提及FRIENDNAME也是一個ID。該人的信息在用戶表中。朋友表是用來檢查哪些人是朋友,所以你的解決方案工作,但我只得到了朋友的ID,這就是爲什麼我如果($ row ['id'] == $ row ['friendname']) – Drikus

+0

我的頭疼了^^'!爲了可讀性,您應該將friendname重命名爲friend_id?以及。應將tbfriends.username_id重命名爲user_id。 – roselan

+0

它仍然不起作用。有些名字仍然是重複的,有些名字應該先出現不。 – Drikus