我通过使用嵌套的while循环从数据库中检索信息来创建提要(有更好的方法吗?)。
我有一个名为users的表,其中包含所有名称和其他内容。另一个表名为messages,它包含消息、发布消息的用户和时间戳。
$userQuery = mysql_query("SELECT name FROM users");
while ($user = mysql_fetch_array($userQuery, MYSQL_NUM)) {
$messageQuery = mysql_query("SELECT message FROM messages WHERE user = $user ORDER BY timestamp DESC");
while ($message = mysql_fetch_array($messageQuery, MYSQL_NUM)) {
echo "$user[0]: $message[0]";
}
}问题是它不是按时间戳排序的,我不知道它是如何排序的。我尝试过带UNIX时间戳的timestamp、datetime和int类型。
编辑:我应该补充说,用户和消息匹配得很好,只是顺序不起作用。
发布于 2011-07-26 03:03:30
我猜你是以或多或少的随机顺序得到你的用户,并且“在”一个用户中排序是可以的吗?!
使用:
$result = mysql_query('select users.name,messages.message from messages join users on (users.name=messages.user) order by messages.timestamp');
while($row = mysql_fetch_row($result))
echo "$row[0]: $row[1]";这应该会给您一个有序的结果(至少如果您有一个名为messages.timestamp的列。检查名称;-))。所有这些都在一个查询中...
发布于 2011-07-26 03:06:10
对于查询,您可以创建一个连接
SELECT u.name as name, m.message as message
FROM users u inner join messages m
on u.user = m.user
order by
m.timestamp DESC至于第二部分,我看不出你的能力有什么问题。也许你可以发布一些你的数据样本,看看这是否有什么不同。
https://stackoverflow.com/questions/6820935
复制相似问题