我有一個mysql數據庫的日期條目。所以我想要的是顯示我的數據庫中的所有日期,然後在每個日期下,我想顯示在specefic日期輸入的數據庫中的所有條目。我正在考慮兩個循環,但我不知道如何編寫條件來顯示數據庫中的所有日期,然後循環輸出該日期下的條目。循環mysql數據
編輯:我用NOW()來存儲日期。通過longneck使用循環,如何在檢查日期是否與之前相同時忽略時間?我應該爆炸嗎?最好的方法是什麼?
我有一個mysql數據庫的日期條目。所以我想要的是顯示我的數據庫中的所有日期,然後在每個日期下,我想顯示在specefic日期輸入的數據庫中的所有條目。我正在考慮兩個循環,但我不知道如何編寫條件來顯示數據庫中的所有日期,然後循環輸出該日期下的條目。循環mysql數據
編輯:我用NOW()來存儲日期。通過longneck使用循環,如何在檢查日期是否與之前相同時忽略時間?我應該爆炸嗎?最好的方法是什麼?
你應該使用一個查詢,按日期排序,並檢測的日期變化的信號,顯示下一個日期:
<?php
$sql = 'select start_date, name from events order by start_date';
$res = mysql_query($sql) or die(mysql_error());
$prev_date = null;
while ($row = mysql_fetch_assoc($res)) {
if ($row['start_date'] != $prev_date) {
echo "<h1>{$row['start_date']}</h1>"\n;
$prev_date = $row['start_Date'];
}
echo "<p>{$row['name']}</p>";
}
?>
我假設你想要一個日期列表,以便你可以對每個日期的條目做單獨的查詢。通常你會使用類似的查詢:
SELECT DISTINCT date_field FROM table_name ORDER BY date_field DESC
(這將做到這最新一,刪除DESC
使其先進先出)
現在,你可能不希望做這樣,因爲它需要大量的查詢(每天輸入一個)。按日期排序條目會更高效,然後使用PHP中的邏輯打印出標題。所以,你可以使用如下代碼:
$result = $db->query("SELECT * FROM table_name ORDER BY date_field DESC");
$current_date = "";
while ($row = $result->fetch_array()) {
if ($current_date != $row["date_field"]) {
echo "<h3>{$row['date_field']}</h3>";
$current_date = $row["date_field"];
}
// Print your entry from $row here.
}
你可能會想,在你的SQL語句:(假設它爲datetime型)
SELECT * FROM表WHERE 日之間的「2009- 9-8 00:00:00' 與 '2008-9-8 23:59:59 '
然後通過你們的結果做你的正常循環
對不起,我起初誤解了這個問題。你可以循環遍歷所有日期,並使用jamuraa中的DISTINCT方法列出它們,然後在列出它們的循環中有這一次運行。 – kilrizzy 2009-09-08 18:56:12
也有看SELECT
語句的GROUP
BY
條款。
+1這也是我經常這樣做的。順便說一下,PHP數組鍵是區分大小寫的,但在上面的一種情況下使用'start_Date'。 – 2009-09-08 19:03:12
「start_date,name」中的名稱是什麼? – Strawberry 2009-09-08 21:31:50
等一下,這個電流只顯示日期爲h1,然後在該日期下只顯示1個條目。我希望它顯示該日期的所有條目。 E.g. 2007年1月6日 條目1,條目2,條目3 – Strawberry 2009-09-08 21:39:49