通过文件时间戳mysql php循环一年和一个月

时间:2015-11-12 19:45:12

标签: php mysql list loops

我有一张桌子。 file table

我想这样安排

<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)AS OrderYear)但是在此之后,另一个月的循环根据我不想要的年份重复。那么这个解决方案是什么。我使用的是php mysql。

1 个答案:

答案 0 :(得分:0)

首先构建数据数组,然后循环遍历它们以构建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
    }
}

注意:代码可以改进一点,我只是快速完成。

注意:这本质上是非常“箭头”,因此您可能希望在工作完成后找到优化方法。