按文件时间戳mysql.php循环使用年和月



我有一个下表。文件表

我想这样安排

<ul>year1
      <ul>month1
     <li>filename </i>
     <li>filename </i>
     <li>filename </i>
     </ul>
     <ul>month2
     <li>filename </i>
    <li>filename </i>
   </ul>
   .............
   ..............
   <ul>month12
   <li>filename </i>
   <li>filename </i>
   </ul>
   </ul>
   <ul>year2
   <ul>month1
   <li>filename </i>
   <li>filename </i>
   <li>filename </i>
   </ul>
   <ul>month2
   <li>filename </i>
   <li>filename </i>
   </ul>
   .............
   ..............
   <ul>month12
   <li>filename </i>
   <li>filename </i>
   </ul>
   </ul>

等等。年份和月份必须根据文件对应的日期戳显示。我试着使用while循环,它在一年内运行良好(使用EXTRACT(year FROM uploaddate)作为OrderYear),但在这之后,另一个月的循环会根据我不想要的年份重复。那么解决这个问题的办法是什么呢。我使用的是php-mysql。

首先构建一个数据数组,然后循环遍历它们来构建HTML。

$dataarray = array();
while($row = $result->fetch_assoc())
{
    $year = date('Y', strtotime($row['uploaddate']));
    $month = date('F', strtotime($row['uploaddate']);
    $dataarray[$year][$month][] = $row['filename'];
}
foreach($dataarray as $year => $months)
{
    echo '<ul>'; //etc.....
    foreach($months as $monthname => $filenames)
    {
        //put one more loop for the filenames in here
    }
}

注意:代码可以改进一点,我只是做得很快。

注意:这在自然界中非常像"箭头",所以一旦你让它工作起来,你可能想找到优化的方法。

最新更新