【发布时间】:2012-02-24 17:42:35
【问题描述】:
我正在开发一个朋友列表类型的函数,该函数将显示用户的朋友,但我遇到了一些逻辑问题。好友存储表的设置方式,共有3列; userid1、userid2 和friendstatus。朋友状态为 1 表示用户是朋友,状态为 0 表示请求处于待处理状态。当用户添加另一个用户为好友时,发送请求的用户被放置在 userid1 中,接收请求的用户被放置在 userid2 中。
所以,我遇到的问题是让功能正确选择用户的朋友,而不是用户自己。基本上,我试图让这个函数来确定哪一列是用户(例如我),哪一列是朋友。
我最初有如下的第一个 SQL 语句,但这也不起作用。
$friends = mysql_query("Select * from friends where (userid1 = $myUsername OR userid2=$myUsername) AND friendstatus = '1'");
这是我试图创建的逻辑。
- 获取用户ID(我的)
- 在第 1 列中搜索我的 ID:如果找到,则显示第 2 列(这将是我的朋友)
- 在第 2 列搜索我的 ID:如果找到,显示第 1 列(这将是我的朋友)
函数friendslookup 只是显示信息并拉取用户信息。它不会增加逻辑。
$myUsername = $_GET['myFriends'];
if(isset($myUsername)){
$friends = mysql_query("Select * from friends where userid1 = $myUsername AND friendstatus = '1'");
$friends2 = mysql_query("Select * from friends where userid2 = $myUsername AND friendstatus = '1'");
if(mysql_num_rows($friends) > 0 OR mysql_num_rows($friends2) >0 ) {
echo '<table><tr><td>Username </td><td> Location</td></tr>';
$col1rows = mysql_num_rows($friends);
$col2rows = mysql_num_rows($friends2);
}
for ($i=0; $i<$col1rows;$i++){
$myFriends = mysql_query("Select * from friends where userid1 = $myUsername AND friendstatus = '1'");
$friend = mysql_fetch_array($myFriends);
$friend_1 = $friend['userid2'];
friendsLookup($friend_1,$myUsername);
}
for ($i=0; $i<$col2rows;$i++){
$myFriends_2 = mysql_query("Select * from friends where userid2 = $myUsername AND friendstatus = '1'");
$friend = mysql_fetch_array($myFriends_2);
$friend_2 = $friend['userid1'];
friendsLookup($friend_2,$myUsername);
}
}
【问题讨论】: