while循环中的最新条目

时间:2015-03-18 19:13:21

标签: php email loops sorting while-loop

我正在使用PHP构建PM系统,我遇到了问题。 每封邮件都存储在数据库中。 此查询获取所有邮件,这些邮件已写入您登录的用户

$getmails = "SELECT * FROM mail WHERE reciever='$drow[ID]'";

然后我有了这段代码,用于显示每个邮件,并在列表中写入用户。

if ($getter->num_rows > 0) {
    while($mrow = $getter->fetch_assoc()) {
        // do something
    }
}

此代码可用并显示邮件。问题是,他的代码显示最新的邮件,位于列表的底部。最顶层的邮件。

每封邮件都有一个ID,而我认为将这些邮件排序到最新邮件的方法是在顶部的最低ID之后进行排序。

这里的任何人都可以帮我实现这个目标吗? 提前致谢

完整代码:

<div class="mailbox">
<?php
    if ($getter->num_rows > 0) {
        while($mrow = $getter->fetch_assoc()) {
            if($mrow['seen'] == 0) {
                echo "<li><b>$mrow[titel]</b></li>";
            } else {
                echo "<li>$mrow[titel]</li>";
            }   
        }
    } else {
        echo "You have no mails";
    }
?>
</div> 

3 个答案:

答案 0 :(得分:3)

按日期对电子邮件排序,我希望您的表格中列create_date

$getmails = "SELECT * FROM mail WHERE reciever='$drow[ID]' ORDER BY create_date DESC";

或使用ID,最新应该是最高的:

$getmails = "SELECT * FROM mail WHERE reciever='$drow[ID]' ORDER BY id DESC";

答案 1 :(得分:1)

使用ORDER BY命令并选择要排序的列名将是最简单的。

"SELECT * FROM mail WHERE receiver='$drow[ID]' ORDER BY date DESC"

我还建议包括&#39;见过&#39;选择中提高效率的价值

"SELECT * FROM mail WHERE receiver='$drow[ID]' and seen=0 ORDER BY date DESC"

答案 2 :(得分:1)

您应该在查询末尾添加'ORDER BY column_name DESC'。 这导致以特定顺序检索数据库信息。

DESC代表'DESCENDING'。

您的查询应如下所示:

$getmails = "SELECT * FROM mail WHERE reciever='$drow[ID]' ORDER BY ID DESC";