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

标签 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. 在 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'];
            }
        }
    }
    

编辑 作为补充,您可能想研究一下 MySQL 的日期/时间函数,特别是 DATE_FORMAT ,这将允许您仅使用数据库输出更多人类可读/用户友好的日期。当然,您可以实现自己的方法来转换 01 => 一月等等。

关于php - 如何在 PHP/MySQL 中对输出进行分类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7962697/

相关文章:

php - 通过 UNIX 套接字连接 Node.JS 和 PHP - EPIPE 写入错误

php - 真/假在 PHP 中是如何工作的?

mysql - CSV 将数据加载到 mySQL 中,其中包含不匹配和跳过的列

MySQL 不带 WHERE 的多条件查询

双启动机器上共享驱动器上的 Mysql 数据源

firefox - 在适用于Firefox的iMacros中,如果发生错误,循环仍可以按预期运行。

algorithm - for循环的频率计数

php - php 的 strpos 函数中的通配符

php - 为什么在 php 中使用 FPDF 的单元格中有左填充?

Python 脚本,运行迭代谷歌搜索并打印热门结果和链接