php - MYSQL PHP 按日期排序并将结果按每个日期分组

标签 php mysql

我曾尝试寻找问题的解决方案,但我不太确定我在寻找什么,所以我运气不佳。

我有一个简单的 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/

相关文章:

mysql - (Ecto.Query.CompileError) 元组只能用于与相同大小的文字元组进行比较。 - 灵药

php - CodeIgniter 路由已找到,但给出 404

php - 从 1.2.7 更新到 1.3.0 的 Doctrine/注释正在减慢我的应用程序

mysql - 当两列具有相同的值时,INSERT WHERE NOT EXISTS 不起作用

MYSQL #1241 错误消息

mysql - 在子查询中计算选票或使用连接 - 哪个更快?

php - 使用 db 时缺少参数 2 错误 :seed

javascript - 如何在js XMLHttpRequest中捕获php重定向?

php - 在 PHP 中合并 2 个数组

javascript - 在对数据库中的多个查询进行每次过滤后,如何存储数据