2011-09-22 5 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

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']) 

과 같다. 숫자 ID를 이름과 비교합니다. 또한 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'])은 사용자가 자신의 친구입니다 의미합니다. 그럴 수 있니?

이 코드는 원하는 이름, 친구 이름을 인쇄합니다. 내가 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

죄송 또한 ID입니다. 사용자의 정보는 사용자 테이블에 있습니다. 친구 테이블은 어떤 사람이 친구인지 확인하는 데 사용되므로 솔루션 작업이 가능하지만 friens의 ID 만 얻을 수 있기 때문에 if ($ row [ 'id'] == $ row [ 'friendname']) – Drikus

+0

my 머리 아파! ^^ '! 가독성을 위해 friendname을 friend_id로 변경해야합니까? 게다가. tbfriends.username_id는 user_id로 이름을 바꿔야합니다. – roselan

+0

여전히 작동하지 않습니다. 어떤 이름은 여전히 ​​중복되어 있으며 처음에는 나타나야하는 이름은 없습니다. – Drikus

관련 문제