我有一张桌子。 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。
答案 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
}
}
注意:代码可以改进一点,我只是快速完成。
注意:这本质上是非常“箭头”,因此您可能希望在工作完成后找到优化方法。