2016-03-11 55 views
3

我有一個表中有7個記錄,但我希望只選擇最後5個按日期排序的記錄DESC。我想在我的表格中按照日期ASC排序顯示這些記錄。從日期按日期從sql數據庫中選擇記錄但我希望在日期表中顯示記錄ASC

我的代碼:

$select_record = mysqli_query($con, "select * from table order by date DESC limit 5"); 
while($row=mysqli_fetch_array($select_record)){ 

$date = $row['date']; 

echo "<tr><td>$date<br></td></tr>"; 

記錄在我的表像這樣

Date 
2014-05-15 
2014-04-15 
2014-06-15 
2014-02-15 
2014-07-15 
2014-01-15 
2014-03-15 

我的代碼就給我造成這樣

Date 
2014-07-15 
2014-06-15 
2014-05-15 
2014-04-15 
2014-03-15 

但我想造成這樣的

Date 
2014-03-15 
2014-04-15 
2014-05-15 
2014-06-15 
2014-07-15 
+0

嗨,伊爾凡,歡迎StackOverflow上。請仔細閱讀「[如何提出一個好問題](http://stackoverflow.com/help/how-to-ask)」。 – fusion3k

+1

可能是一個愚蠢的問題,但....爲什麼你ORER BY desc當你真的想要ORDER BY ASC? – VolkerK

+0

我想他不想讓循環從第一個月開始計算,而是第3個月。 idk我很困惑自己。 – andre3wap

回答

0

編輯while循環:

而不是這樣做:

while($row=mysqli_fetch_array($select_record)){ 

$date = $row['date']; 

echo "<tr><td>$date<br></td></tr>"; 

} 

試着這樣做:在陣列

create an array that can store your date values retrieved from query 
    while($row=mysqli_fetch_array($select_record)){ 

    $date = $row['date']; 
    Add $date to the array you created 

    } 
    Iterate the array from the END to START and print dates . 
    { 
     echo "<tr><td>$date<br></td></tr>"; 
    } 
4

不要第二選擇的第一個頂部:

SELECT t.* FROM 
    (SELECT * FROM `table` ORDER BY `date` DESC LIMIT 5) t 
ORDER BY t.`date` ASC 

短版:

(SELECT * FROM `table` ORDER BY `date` DESC LIMIT 5) ORDER BY `date` ASC 
+1

你甚至可以省略外部的SELECT'(select * from table order by date DESC limit 5)ORDER BY \'date \'ASC',參見http://sqlfiddle.com/#!9/cf441/1 – VolkerK

+0

@VolkerK是的,我被你的評論中括號之前的第一個SELECT所困惑,那就是爲什麼我之後刪除了我的。 :) – mitkosoft

0

試試這個:

$select_record = mysqli_query($con, "select * from table order by date DESC limit 5"); 

// Sort in chronological order. 
usort($select_record, function($a, $b) { 
    return strcmp($a['db'], $b['db']); 
}); 

while($row=mysqli_fetch_array($select_record)){ 

$date = $row['date']; 

echo "<tr><td>$date<br></td></tr>"; 
0

簡單的解決方案是提取行和反向列表在PHP的土地。根據結果​​大小,這將是我的解決方案。

如果你真的想這樣做,而不必將完整的結果存儲在PHP的土地上,你可以通過子選擇來完成。這意味着與更換您的查詢表達式:

$select_record = mysqli_query($con, "SELECT * FROM (select * from table order by date DESC limit 5) AS result ORDER BY date"); 

但我認爲這是不只是扭轉了結果PHP少維護。