如何在PHP / MySQL中对输出进行分类?

时间:2011-11-01 05:13:49

标签: php mysql loops

假设我有这个MySQL表

DATE       | NAME
2011-10-11 | Rock
2011-10-31 | Pen
2011-10-28 | Paper
2010-10-3  | Scissor
2010-3 -2  | Pen
2011-11-1  | Tree
2011-11-2  | Bug

当我从数据库中取出它时,我想将它们安排在日期类别中......

我试图获得此输出。

October 2010

2010-10-3 Scissor

October2011

2011-10-11 Rock
2011-10-31 Pen
2011-10-28 Paper

November 2011

2011-11-1  | Tree
2011-11-2  | Bug

数据库中的日期不断添加,因此我无法在每个单独的查询中手动获取日期和值。

1 个答案:

答案 0 :(得分:3)

  1. 在SQL查询中放置ORDER BY date DESC子句,按日期列排序结果。
  2. 循环结果并在每次类别更改时输出类别标题(在您的情况下,年/月更改),或者如果您希望稍后重复使用数据,则将结果存储在有意义的多维数组中(具有可论证的效率),可能是这样的:

    $results = array();
    while( $row = mysqli_fetch_array(...))
    {
        list( $year, $month, $day) = explode( '-', $row['date']);
        $results[ $year ][ $month ][] = $row;
    }
    
    foreach( $results as $year => $month_array)
    {
        foreach( $month_array as $month => $row_array)
        {
            echo "Category $month $year";
            foreach( $row_array as $row)
            {
                echo $row['date'];
            }
        }
    }
    
  3. 编辑作为补充,您可能需要查看MySQL的日期/时间函数,特别是DATE_FORMAT,这将允许您输出更多人类可读/用户友好的日期仅使用数据库。当然,您可以实现自己的方法来转换01 =>一月等等。