MYSQL PHP按日期排序,并将结果分成每个日期的组

我试图寻找解决问题的方法,但我不确定我在寻找什么,所以我运气不好.

我有一个简单的MySQL数据库,其中一个表称为“活动”.在该表中,我有“start_date”,“activity_description”和“activity_location”的字段.

我正在尝试使用PHP进行MySQL查询并以升序日期顺序显示结果,但是将所有落在同一日期的活动用标题分隔.

例如,我试图实现以下目标.

2012-05-03

>带狗散步
>公园

>出去吃饭
>小意大利餐厅

2012-05-04

>获得汽车服务
>约翰斯汽车和机械

2012-05-05

>做杂货店购物
>新鲜超市

>去看电影
> MegaPlex电影院

>与Sam见面
>墙上的洞

到目前为止,我已经知道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

>与Sam见面
>墙上的洞

任何人都可以给我一些提示,告诉我如何在特定日期回复一次’start_date’,然后在日期与上一个日期不同时再次回复它?

任何提示,无论多么神秘,都会非常感激.谢谢.

最佳答案
只需跟踪日期.

您可以使用过去看起来不像日期的内容来定义日期,或者只是假.

在lis中运行时,您只能在日期更改时打印标题并保存新日期.像这样:

$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>'; 
 }  

问候,
STEFAN

转载注明原文:MYSQL PHP按日期排序,并将结果分成每个日期的组 - 代码日志