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

时间:2015-03-18 15:03:16

标签: php sql arrays reverse

要预先,我是PHP / SQL编程的新手。我可能已经错误地编码了,或者#34;漫长的方式"。说实话,我不知道区别。我只是想为一个有趣的项目建立一个基本的网络聊天室。目前,会议室中显示的消息按时间戳按降序排序。最新消息显示在页面顶部。我想要的是在页面底部有最新的消息。我一次只能显示30条消息。我无法弄清楚如何"翻转"消息,以便最新显示在底部。 (我希望这是有道理的)。以下是我用来显示消息的内容:

$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>";
    }
}

有人能指出我正确的方向吗?

如果我没有提供足够的信息,我道歉 - 我对这一切都不熟悉。提前感谢您的时间!

1 个答案:

答案 0 :(得分:1)

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

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

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

这样你就可以保留你的php脚本了; html中的顺序是相同的,但在屏幕上它将被颠倒。

你还需要将你的项目包装在元素中,但是列表更合适,而不仅仅是带有换行符的纯文本。