我有一个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