假设我有这个 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
数据库中的日期不断添加,因此我无法在每个单独的查询中手动获取日期和值。
最佳答案
- 在 SQL 查询中添加
ORDER BY date DESC
子句,以按日期列对结果进行排序。 要么循环遍历结果,并在每次类别更改时输出类别标题(在您的情况下,年/月更改),或者如果您想稍后重用数据,则将结果存储在有意义的多维数组中(效率有待商榷),也许是这样的:
$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/