我需要重新排序我的结果

时间:2011-04-12 00:42:39

标签: php mysql

所以我刚写了这个小脚本。问题是我想在底部的最新消息不在顶部所以我需要从mysql查询中获取结果并重新排序它们然后回显它们...感谢任何帮助......

编辑:DESC是正确的顺序,while循环是问题..因为php逐行运行

P.S。请不要担心我稍后会添加的安全功能。

<?php
mysql_connect('localhost', '', '');
mysql_select_db('');

if(isset($_POST['submit'])) {

    date_default_timezone_set('America/New_York');

    $_POST['username'] = 'Guest';
    //$_POST['message'] = "Hello my name is Guest!";

    mysql_query("INSERT INTO chat (username,message,date,time) VALUES ('".$_POST['username']."','".$_POST['message']."','".date('n.j.o g:i:s A')."','".time()."')");

}

$result = mysql_query("SELECT * FROM chat ORDER BY time DESC LIMIT 10");

while ($row = mysql_fetch_assoc($result)) {
    $username = $row['username'];
    $message = $row['message'];
    $date = $row['date'];

    echo "<div><b>".$username.":</b> ".$message." <i>".$date."</i></div>";
}
?>

<form method="post">
<input name="message" />
<input type="submit" name="submit" value="Send"/>
</form>
<br />

2 个答案:

答案 0 :(得分:2)

您可以尝试嵌套查询

SELECT * FROM (
     SELECT * FROM chat ORDER BY time DESC LIMIT 10
) AS inner ORDER BY time ASC;

所以内部查询获取最近的10条记录,然后外部查询反转排序顺序。

另一种方法是在PHP中将结果集提取到数组中,然后以相反的顺序输出。

答案 1 :(得分:1)

您可以通过先存储所有结果并稍后访问它们来轻松颠倒PHP中的顺序:

<?php

$records = array();
while ($row = mysql_fetch_assoc($result)) {
    $records[] = $row;
}

$records = array_reverse($records);

foreach ($records as $row) {
    $username = $row['username'];
    $message = $row['message'];
    $date = $row['date'];

    echo "<div><b>".$username.":</b> ".$message." <i>".$date."</i></div>";
}