【问题标题】:PHP query to select information from 3 tables about a user and his palsPHP 查询从 3 个表中选择有关用户和他的朋友的信息
【发布时间】: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。我知道这只会带来有头像的朋友。如何更改此声明以获取所有朋友,无论是否有图像。任何帮助将不胜感激。

【问题讨论】:

标签: php mysql


【解决方案1】:

从查询中删除 AND picture.avatar = 1

将来,将查询复制到 sql 编辑器中,试一试,看看需要删除哪些谓词才能获得所需的结果。

【讨论】:

  • 感谢您的回复。如果我删除它,是的,我将能够说出所有 user_92 的 4 岁好友。但是,对于那些拥有的人,我将如何获得他们的头像?
  • @kinyanjui 在select语句中添加picture.avatar,然后在php循环中检查if($row_pal_info1['avatar'] == 1)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-08
  • 2016-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-06
  • 1970-01-01
相关资源
最近更新 更多