2011-11-01 70 views
0

比方說,我有這樣的MySQL表如何在PHP/MySQL中對輸出進行分類?

DATE  | NAME 
2011-10-11 | Rock 
2011-10-31 | Pen 
2011-10-28 | Paper 
2010-10-3 | Scissor 
2010-3 -2 | Pen 
2011-11-1 | Tree 
2011-11-2 | Bug 

當我把他們從我希望他們在日期類別安排數據庫了...

我試着去得到這個輸出。

October 2010 

2010-10-3 Scissor 

October2011 

2011-10-11 Rock 
2011-10-31 Pen 
2011-10-28 Paper 

November 2011 

2011-11-1 | Tree 
2011-11-2 | Bug 

數據庫中的日期不斷添加,所以我無法在每個單獨的查詢中手動獲取日期和值。

回答

3
  1. 在您的SQL查詢中添加ORDER BY date DESC子句,以按日期列排序結果。
  2. 無論是通過每一次的結果和類別標題環類別的變化(在你的情況下,年/月修改),或者如果你想以後再次將數據存儲在一個有意義的多維數組的結果(有爭議的效率),也許是這樣的:

    $results = array(); 
    while($row = mysqli_fetch_array(...)) 
    { 
        list($year, $month, $day) = explode('-', $row['date']); 
        $results[ $year ][ $month ][] = $row; 
    } 
    
    foreach($results as $year => $month_array) 
    { 
        foreach($month_array as $month => $row_array) 
        { 
         echo "Category $month $year"; 
         foreach($row_array as $row) 
         { 
          echo $row['date']; 
         } 
        } 
    } 
    

編輯,正如另外,你可能想看看MySQL的日期/時間的功能,特別是DATE_FORMAT,這將讓你的輸出更多的人 - 只使用數據庫的可讀/用戶友好日期。當然,你可以實現自己的方法來轉換01 => 1月等等。

+0

降價處理器是有點靠不住的,當一個代碼塊是一個列表的一部分,你需要額外的縮進,使其行爲本身。 –

+0

啊,我現在看到了。謝謝! – nickb

+0

嗨。對不起,長回覆。我試過了你的代碼,但是如果我在一個月內有超過2筆交易,它顯示'Category $ month $ year'兩次,每次交易都由它分隔。 – JohnSmith

相關問題