簡體   English   中英

最新的條目在while循環中優先

[英]Newest entry first in 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> 

按日期對電子郵件進行排序,我希望表中的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";

使用ORDER BY命令並選擇要排序的列名將是最簡單的。

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

我還建議您在選擇中包括“可見”值以提高效率

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

您應該在查詢末尾添加“ ORDER BY column_name DESC” 這導致以特定順序檢索數據庫信息。

DESC代表“下降”。

您的查詢應如下所示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM