【发布时间】:2011-02-07 17:13:52
【问题描述】:
我有这 3 张桌子:
用户表(PK user_id)
Fields: user_id, user_first_name, user_last_name, username, user_email...etc
pals 表(FK user1_id, user2_id from PK user_id in users 表)
pal_id user1_id user2_id status timestamp
7 98 97 0 2011-02-02 21:44:28
8 92 98 1 2011-02-04 08:06:00
9 95 92 0 2011-02-04 08:05:54
10 97 92 1 2011-02-04 08:05:28
11 97 95 1 2011-02-04 08:06:33
9 92 93 1 2011-02-04 08:05:54
10 79 92 1 2011-02-04 08:05:28
11 97 95 1 2011-02-04 08:06:33
图片表(FK user_id from PK user_id in users表)
picture_id picture_url picture_thumb_url user_id avatar timestamp
73 ../User_Images/66983.jpg ../User_Images/Thumbs/66983.jpg 92 0 2011-02-03 21:52:02
74 ../User_Images/56012.jpg ../User_Images/Thumbs/56012.jpg 93 1 2011-01-25 12:09:58
75 ../User_Images/58206.jpg ../User_Images/Thumbs/58206.jpg 95 0 2011-01-22 22:12:35
76 ../User_Images/85428.jpg ../User_Images/Thumbs/85428.jpg 98 0 2011-01-23 23:50:16
77 ../User_Images/42325.jpg ../User_Images/Thumbs/42325.jpg 98 0 2011-01-24 00:11:15
78 ../User_Images/73154.jpg ../User_Images/Thumbs/73154.jpg 98 1 2011-01-24 00:11:15
81 ../User_Images/92865.jpg ../User_Images/Thumbs/92865.jpg 92 0 2011-01-31 18:24:34
82 ../User_Images/75611.jpg ../User_Images/Thumbs/75611.jpg 92 0 2011-01-26 18:08:52
83 ../User_Images/74829.jpg ../User_Images/Thumbs/74829.jpg 95 0 2011-02-01 20:48:48
84 ../User_Images/5987.jpg ../User_Images/Thumbs/5987.jpg 92 1 2011-02-03 21:52:02
我正在创建一个社交网站,我希望在 PHP 生成的表格中显示用户的好友。我想在这些缩略图下方显示好友缩略图和其他信息,以便在您单击缩略图时,它会将您带到该用户的个人资料。
从上面可以看出,用户 92 和用户 98 是好友,因为他们已经确认了友谊(显示为 status = '1')
用户 92 有 4 个朋友...他请求了 2 个,其他 2 个用户向他发送了请求。
他的朋友是用户 98、97、93 和 79。
看看这个:(解释如何添加好友)
“A”添加了“B”
在朋友表上,user1 将是“A”,而 user2 将是“B”
如果“B”添加了“A”
在朋友表上,user1 将是“B”,而 user2 将是“A”
用户可以拥有图片,存储在上面的图片表中。用户从他的图片中选择他的头像...这是通过设置他的图片之一来完成的。头像='1'。
我们的用户 92 选择了他自己上传的头像图片。用户 98 和 93 也是如此。另外两个朋友有默认头像图像。 (所有图像都存储在 User Images 文件夹中)。
我的问题。
到目前为止,例如,在用户 92 的个人资料中,我只能检索具有头像的用户的好友信息。如何更改我的代码才能获得有头像的朋友和没有头像的朋友?
我的 PHP 代码:
<?php
//get pal info
$query_pal_info1 = "SELECT pals.user2_id AS pals_id1, users.user_first_name AS pals_first_name, users.user_last_name AS pals_last_name, picture.picture_thumb_url AS
picture, picture.avatar AS avatar FROM pals INNER JOIN (users LEFT JOIN picture ON picture.user_id = users.user_id) ON users.user_id = pals.user2_id WHERE
pals.user1_id = '$user_id' AND picture.avatar = 1 GROUP BY pals_id1";
$pal_info1 = mysql_query($query_pal_info1 , $connections) or die(mysql_error());
$query_pal_info2 = "SELECT pals.user1_id AS pals_id1, users.user_first_name AS pals_first_name, users.user_last_name AS pals_last_name, picture.picture_thumb_url AS
picture, picture.avatar AS avatar FROM pals INNER JOIN (users LEFT JOIN picture ON picture.user_id = users.user_id) ON users.user_id = pals.user1_id WHERE
pals.user2_id = '$user_id' AND picture.avatar = 1 GROUP BY pals_id1";
$pal_info2 = mysql_query($query_pal_info2 , $connections) or die(mysql_error());
//echo table with pal information
echo "\n<table>";
$j = 5;
while (($row_pal_info1 = mysql_fetch_assoc($pal_info1)) && ($row_pal_info2 = mysql_fetch_assoc($pal_info2)))
{
if($j==5) echo "\n\t<tr>";
$thumbnail_user = $row_pal_info1['picture'] != '' ? $row_pal_info1['picture'] : '../Style/Images/default_avatar.png';
echo "<td width='100' height='100' align='center' valign='middle'><a href = 'user_view.php?user_id2={$row_pal_info1['pals_id1']}'>
<img src='/NNL/User_Images/$thumbnail_user' border='0'/></a></td>\n";
$thumbnail_user = $row_pal_info2['picture'] != '' ? $row_pal_info2['picture'] : '../Style/Images/default_avatar.png';
echo "<td width='100' height='100' align='center' valign='middle'><a href = 'user_view.php?user_id2={$row_pal_info2['pals_id1']}'>
<img src='/NNL/User_Images/$thumbnail_user' border='0'/></a></td>\n";
$j--;
if($j==0) {
echo "\n\t</tr>\n\t<tr>";
$j = 5;
}
}
if($j!=5) echo "\n\t\t<td colspan=\"$j\"></td>\n\t</tr>";
echo "\n</table>";
?>
在我的查询中:$query_pal_info1 和 $query_pal_info2,我有 ...AND picture.avatar = 1。我知道这只会带来有头像的朋友。如何更改此声明以获取所有朋友,无论是否有图像。任何帮助将不胜感激。
【问题讨论】: