假设我有这个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
数据库中的日期不断添加,因此我无法在每个单独的查询中手动获取日期和值。
答案 0 :(得分:3)
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 =>一月等等。