PHP查询从PAL和self检索文本和/或图像状态更新

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

我正在建立一个社交网站。用户可以有好友,并可以看到他们的更新(如facebook)。此外,可以仅上载文本更新或文本和图像更新

我希望我的主页以降序显示好友和他们自己的更新,从最新的开始

我希望显示器是这样的:

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?