使用PHP计算年月份归档中的内容

时间:2014-01-05 19:36:21

标签: php mysql

我需要打印每年/每月的新闻数量:

2013

  • Octobr(20)
  • 十一月(45)
  • 九月(80)

2014

  • 1月(5)

我有这个:

 $sql = "SELECT YEAR(FROM_UNIXTIME(timestamp)) AS YEAR, 
                MONTHNAME(FROM_UNIXTIME(timestamp)) AS MONTH, 
                COUNT(*) AS TOTAL 
         FROM NEWS GROUP BY YEAR, MONTH";
 $newsdata = DataAccess::ArrayFetch($sql);

 foreach($newsdata AS $news){            
   //what???   
 }

现在,如何打印年份和月份?

1 个答案:

答案 0 :(得分:2)

您在查询中对它们进行排序,然后按顺序打印它们。您需要检测年份更改,以打印年份标题:

$sql = "SELECT YEAR(FROM_UNIXTIME(timestamp)) AS YEAR, 
                MONTHNAME(FROM_UNIXTIME(timestamp)) AS MONTH, 
                COUNT(*) AS TOTAL 
         FROM NEWS GROUP BY YEAR, MONTH ORDER BY YEAR DESC, MONTH ";
$newsdata = DataAccess::ArrayFetch($sql);

$currentYear = null;

foreach($newsdata AS $news){            
  if ($currentYear != $news['YEAR']){
    echo '<h2>'.$news['YEAR'].'<h2>';
    $currentYear = $news['YEAR'];
  } 
  echo '<dd>'.$news['MONTH'].'<dd><dt>'.$news['TOTAL'].'</dt>';
}