道歉的长度,但我想澄清。 我正在尝试建立一个网站,让人们可以更新他们的状态(如Facebook)。只是学习PHP。我添加了一项功能,可以更新其状态(仅限文本),或者可以更新其状态(文本并上传该状态的照片)。我已经能够做到这一点,但更新后,难度是表示形式的一个以前的更新:使用头像图像显示降序状态更新并更新图像
化身PIC - 更新文本 - 更新图像(如图像)
化身PIC - 更新文本 - 默认图像(如果没有上传更新图片)
默认的头像PIC - 更新文本 - 默认图像(如果没有上传更新图片)
使用最新的更新,然后再剩下的降序排列。
如果用户的所有更新都有更新图片(即wid_updates.attached_picture_is不为空,那么我没有问题。如果用户没有提供图片更新,那么当返回先前的更新时,所有的更新都会丢失。
用户表:
user_id, first_name, last_name, tel_no, address, username etc.
Wid_pdates表:
update_id, update_text, attached_picture_id, user_id, timestamp
图片表:
picture_id, picture_url, picture_thumb_url, user_id, avatar(bit)
头像位默认为0,如果是用户头像(头像)图片,则设为1。
我的PHP代码:
<?php
$user_id = $_SESSION['UserSession'];
//query user avatar
mysql_select_db($database_connections, $connections);
$query_avatar_thumb = "SELECT picture_thumb_url FROM picture WHERE user_id='$user_id' AND avatar='1'";
$avatar_thumb_result = mysql_query($query_avatar_thumb) or die(mysql_error());
$avatar_thumb = mysql_fetch_assoc($avatar_thumb_result);
//query username
$query_user_info = "SELECT username FROM users WHERE user_id='$user_id'";
$user_info = mysql_query($query_user_info, $connections) or die(mysql_error());
$row_user_info = mysql_fetch_assoc($user_info);
//query update image
$query_wid_updates = "SELECT update_text, picture_thumb_url FROM wid_updates JOIN picture ON wid_updates.user_id = '$user_id'
AND ((wid_updates.attached_picture_id = picture.picture_id) OR (wid_updates.attached_picture_id IS NULL)) ORDER BY wid_updates.update_id DESC";
$wid_updates = mysql_query($query_wid_updates, $connections) or die(mysql_error());
$row_wid_updates = mysql_fetch_assoc($wid_updates);
?>
如果所有的更新都有一幅画,那么一切都很好。如果一个更新没有显示更新的图片显示的次数与否相同。照片表中的照片,包括每张照片。如果图片中有4张图片,则无图片的文字更新将连同每张图片返回4次。
出了什么问题?任何帮助赞赏。
谢谢StefanHållén给你回复。原因是我在连接上匹配user_id是因为图片表保存了其他用户的图片。这是我的profile.php页面,我希望用户只能看到他们过去的更新。在主页上,他们会看到他们和其他用户 – 2011-01-13 15:25:44