我曾尝试寻找问题的解决方案,但我不太确定我在寻找什么,所以我运气不佳。
我有一个简单的 MySQL 数据库,其中有一个名为“activities”的表。在该表中,我有“start_date”、“activity_description”和“activity_location”字段。
我正在尝试使用 PHP 执行 MySQL 查询并按日期升序显示结果,但同一日期的所有事件都用标题分隔。
例如,我正在尝试实现以下目标。
2012-05-03
- 带狗出去散步
- 公园
- 出去吃晚饭
- 小意大利餐厅
2012-05-04
- 保养汽车
- 约翰汽车和机械
2012-05-05
- 去杂货店购物
- 生鲜超市
- 去看电影
- MegaPlex 电影院
- 与山姆见面
- 墙上酒吧的洞
到目前为止,我已经确定 MQSQL 查询需要是这样的:
$result = mysql_query("SELECT * FROM activities ORDER BY start_date ASC")
然后为了显示结果我需要这样做:
while($row = mysql_fetch_array($result))
{
echo
'<strong>' .
$row['start_date'] .
'</strong>' .
'<ul><li>' .
$row['activity_description'] .
'</li><li>' .
$row['activity_location'] .
'</li></ul>';
}
它给出了这样的结果,为每个结果重复日期:
2012-05-03
- 带狗出去散步
- 公园
2012-05-03
- 出去吃晚饭
- 小意大利餐厅
2012-05-04
- 保养汽车
- 约翰汽车和机械
2012-05-05
- 去杂货店购物
- 生鲜超市
2012-05-05
- 去看电影
- MegaPlex 影院
2012-05-05
- 与山姆见面
- 墙上酒吧的洞
谁能给我一些提示,告诉我如何只为特定日期回显一次“start_date”,然后在该日期与前一个日期不同时再次回显它?
任何提示,无论多么神秘,我们都将不胜感激。谢谢。
最佳答案
只需跟踪日期。
您定义的日期不会像过去的日期或只是错误的日期。
运行列表时,您只会在日期更改时打印标题并保存新日期。就像这样:
$currentDate = false;
while($row = mysql_fetch_array($result))
{
if ($row['start_date'] != $currentDate){
echo
'<strong>' .
$row['start_date'] .
'</strong>' ;
$currentDate = $row['start_date'];
}
echo
'<ul><li>' .
$row['activity_description'] .
'</li><li>' .
$row['activity_location'] .
'</li></ul>';
}
问候, 斯蒂芬
关于php - MYSQL PHP 按日期排序并将结果按每个日期分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10430346/