PHP查询从PAL和self检索文本和/或图像状态更新
我正在建立一个社交网站。用户可以有好友,并可以看到他们的更新(如facebook)。此外,可以仅上载文本更新或文本和图像更新 我希望我的主页以降序显示好友和他们自己的更新,从最新的开始 我希望显示器是这样的:PHP查询从PAL和self检索文本和/或图像状态更新,php,mysql,Php,Mysql,我正在建立一个社交网站。用户可以有好友,并可以看到他们的更新(如facebook)。此外,可以仅上载文本更新或文本和图像更新 我希望我的主页以降序显示好友和他们自己的更新,从最新的开始 我希望显示器是这样的: Avatar_picture Update_text Update_image ...OR Avatar_picture Update_text no_image ...OR Default_avatar_picture Up
Avatar_picture Update_text Update_image ...OR
Avatar_picture Update_text no_image ...OR
Default_avatar_picture Update_text no_image
我有一个用户表,其中包含:
user_id, username, user_telephone, user_address etc
我还有一个图片表,其中存储图像,包括化身:
picture_id picture_url picture_thumb_url user_id type timestamp
105 68253.png 68253.png 95 other 2011-02-21 22:42:41
106 44391.jpg 44391.jpg 95 other 2011-02-21 22:42:57
107 73154.jpg 73154.jpg 95 main_avatar_large 2011-02-21 22:43:06
可以看出,它存储用户的id和类型。上传并选择为头像的任何图像都将重命名为main_avatar_large类型
我有一张朋友的桌子:
pal_id user1_id user2_id status timestamp
25 92 104 1 2011-02-24 09:34:43
26 95 92 1 2011-02-24 09:35:12
27 92 107 1 2011-02-24 09:35:17
28 97 92 1 2011-02-24 09:35:21
31 106 92 1 2011-02-24 09:36:32
32 105 92 1 2011-02-24 09:36:48
33 92 103 0 2011-02-24 09:37:09
36 92 99 0 2011-02-24 22:54:28
37 108 92 1 2011-02-25 08:45:58
user1\u id存储友谊发起人的用户id。确认友谊后,状态设置为1
我还有一个名为wid_updates的更新表:
update_id update_text attached_picture_id user_id timestamp
87 Hi there NULL 92 2011-02-21 18:57:46
88 A new update NULL 92 2011-02-21 22:53:19
89 Another one 112 92 2011-02-21 22:53:32
90 123 NULL 108 2011-02-24 09:39:24
91 Jamo's plan 124 108 2011-02-25 08:42:35
可以看出,如果状态更新没有图片,则附加的图片id为空
我有一个查询,它能够获取用户拥有的所有好友的用户id加上他们的化身:
$query_pal_info = "SELECT DISTINCT users.user_id, picture.picture_thumb_url FROM pals, users, picture
WHERE (
pals.user1_id = '$user_id' AND pals.user2_id = users.user_id
AND pals.status = '1' AND picture.user_id = users.user_id AND picture.type='main_avatar_large')
UNION
SELECT DISTINCT users.user_id, picture.picture_thumb_url FROM pals, users, picture
WHERE (
pals.user2_id = '$user_id' AND pals.user1_id = users.user_id
AND pals.status = '1' AND picture.user_id = users.user_id AND picture.type='main_avatar_large')";
$pal_info = mysql_query($query_pal_info , $connections) or die(mysql_error());
我还可以在我的个人资料页面中检索已登录用户的过去状态更新,包括头像和更新图像:
//query update
$query_wid_updates = "SELECT update_text, picture_thumb_url, picture_id FROM wid_updates LEFT JOIN picture ON wid_updates.attached_picture_id = picture.picture_id
WHERE wid_updates.user_id = '$user_id' ORDER BY wid_updates.update_id DESC";
$wid_updates = mysql_query($query_wid_updates, $connections) or die(mysql_error());
我如何构建一个查询,以显示PAL的更新和用户自己的更新,并以降序从最新的文本和图像开始?
任何帮助都将不胜感激 如果当前登录用户的id是当前用户id,请尝试
SELECT av.picture_thumb_url as avatar_pic, update_text, upd_pic.picture_thumb_url as update_pic FROM
wid_updates upd
LEFT JOIN pictures upd_pic ON attached_picture_id = upd_pic.picture_id
LEFT JOIN pictures av ON av.user_id = upd.user_id AND av.type = 'main_avatar_large'
WHERE
upd.user_id IN (SELECT IF (p.user1_id == current_user_id, p.user2_id, p.user1_id) AS pal_id FROM pals p WHERE p.user1_id = current_user_id OR p.user2_id = current_user_id)
OR upd.user_id = current_user_id ORDER BY timestamp DESC
如果当前登录用户的id为当前用户id,请尝试
SELECT av.picture_thumb_url as avatar_pic, update_text, upd_pic.picture_thumb_url as update_pic FROM
wid_updates upd
LEFT JOIN pictures upd_pic ON attached_picture_id = upd_pic.picture_id
LEFT JOIN pictures av ON av.user_id = upd.user_id AND av.type = 'main_avatar_large'
WHERE
upd.user_id IN (SELECT IF (p.user1_id == current_user_id, p.user2_id, p.user1_id) AS pal_id FROM pals p WHERE p.user1_id = current_user_id OR p.user2_id = current_user_id)
OR upd.user_id = current_user_id ORDER BY timestamp DESC
我真的希望你建立这个项目只是为了好玩,因为这个世界最不需要的是另一个社交网站D=@Kranu。哈哈,其实这不是为了好玩。这将是一个有人可以在大城市查看活动和夜总会的地方。社交方面只是一个附加功能。我真的希望你构建这个项目只是为了好玩,因为这个世界最不需要的是另一个社交网站D=@Kranu。哈哈,其实这不是为了好玩。这将是一个有人可以在大城市查看活动和夜总会的地方。社交方面只是一个附加因素。@Yasen Zhelev。谢谢你的回复。我尝试了你的代码,但它只返回当前登录用户的更新。看不到任何好友的更新。我对其进行了一些更改,请立即尝试。并查看“如果(p.user1\u id==current\u user\u id,p.user2\u id,p.user1\u id)作为pal\u id从pals p中选择,其中p.user1\u id=current\u user\u id或p.user2\u id=current\u user\u id”返回给您。它应该是所有用户pal ID。@Yasen Zhelev。谢谢我做了一些改变,以适应我的其他代码。我会更新,并告诉你,如果它works@Yasen哲列夫。看起来不错。如何调用要显示的两个不同图像?现在我有,但这显示了更新图片。如果我想展示阿凡达呢?我如何称呼它们来区分这两个?在你的例子中,我将如何称呼它们,av.picture\u thumb\u url和upd\u pic.picture\u thumb\u url?@Yasen Zhelev。谢谢你的回复。我尝试了你的代码,但它只返回当前登录用户的更新。看不到任何好友的更新。我对其进行了一些更改,请立即尝试。并查看“如果(p.user1\u id==current\u user\u id,p.user2\u id,p.user1\u id)作为pal\u id从pals p中选择,其中p.user1\u id=current\u user\u id或p.user2\u id=current\u user\u id”返回给您。它应该是所有用户pal ID。@Yasen Zhelev。谢谢我做了一些改变,以适应我的其他代码。我会更新,并告诉你,如果它works@Yasen哲列夫。看起来不错。如何调用要显示的两个不同图像?现在我有,但这显示了更新图片。如果我想展示阿凡达呢?我如何称呼它们来区分这两个?在你的例子中,我将如何称呼它们,av.picture\u thumb\u url和upd\u picture\u thumb\u url?