我正在修改我的新聞系統的導航,並希望使用最小的MySQL查詢來完成此操作。我已經設法將這一切都歸結爲一個查詢,但似乎有些錯誤。任何幫助將不勝感激。用PHP對層次排序的MySQL輸出進行排序
我想達到的目的是(字面)事件的下列概述,每年和每月分級排序,在該月的事件數一起:
2012
--04 (3)
--02 (1)
--01 (1)
2011
--12 (3)
--11 (2)
--10 (3)
--09 (1)
--07 (1)
--02 (1)
我非常接近。我國查詢如下:
SELECT start_date, date_format(start_date, "%Y") as year, date_format(start_date, "%m") as month FROM event ORDER BY start_date desc
然後,我的PHP循環如下:
$year = '';
$year_counter = 0;
$month = '';
$month_counter = 1;
while($row = mysql_fetch_assoc($result)){
if ($year != $row['year']) {
$year = $row['year'];
$output .= $year.'<br />';
}
if ($month == $row['month']) {
$month_counter++;
} else {
$month = $row['month'];
$output .= '--'.$month.' ('.$month_counter.')<br />';
$month_counter = 1;
}
}
這完全產生的一切,除了每月的事件,這似乎總是一個行號關閉(你可以看到與上面通緝結果的區別)。
2012
--04 (1)
--02 (3)
--01 (1)
2011
--12 (1)
--11 (3)
--10 (2)
--09 (3)
--07 (1)
--02 (1)
我一直在修補這整個下午沒有成功。我認爲最好把它交給絕對的專家。一隻手好嗎?
如果在表達式中放置月份循環,會發生什麼情況? – 2012-03-22 16:33:39
如果我這樣做,只顯示每年的第一個月... – maartenmachiels 2012-03-22 17:54:04