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