如何以相反的顺序显示 mysql_fetch_array 的结果?

How do I display results of a mysql_fetch_array in reverse order?

首先,我是 PHP/SQL 编程新手。我可能编码错误,或者 "the long way"。老实说,我不知道有什么区别。我只是想为一个有趣的项目制作一个基本的网络聊天室。目前,显示在房间中的消息按时间戳降序排列。最新消息显示在页面顶部。我想要的是在页面底部显示最新消息。我一次只显示 30 条消息。我不知道如何 "flip" 消息,以便最新的显示在底部。 (我希望这是有道理的)。这是我用来显示消息的内容:

$query = "SELECT  * FROM roomdata ORDER BY timestamp DESC LIMIT 30 ";
$result = mysql_query($query);

if ($result) {   

    while($row= mysql_fetch_array($result)) {

// Check to see if the message was sent by a chatter
if ($row['sender']){
        $publicmessage= '<b>['.$row['sender'].']</b>  '.$row['message'];
}else{ 
// if not, it must have been sent by the server (ie: login message, server announcement, etc)
$publicmessage= $row['message'];
}
echo "$publicmessage <BR>";
    }
}

谁能给我指出正确的方向?

如果我没有包含足够的信息,我深表歉意 - 我是新手。预先感谢您的宝贵时间!

您当然可以将所有内容放入 php 中的数组中,然后使用 array_reverse() 反转顺序(或者取末尾的项目直到它为空...)。对于纯 sql 解决方案,请查看 this question

另一种解决方案 - 如果您的浏览器要求允许 - 将使用 flexbox 来显示项目并设置:

.container {
    display: flex;
    flex-direction: column-reverse;
}

这样你就可以让你的 php 脚本保持原样; html 中的顺序将相同,但在屏幕上将相反。

您还需要将您的项目包装在元素中,但无论如何列表比带换行符的纯文本更合适。