【问题标题】:looping through year and month by file timestamp mysql php通过文件时间戳mysql php循环年和月
【发布时间】:2015-11-12 19:45:12
【问题描述】:

我有一张下表。 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。

【问题讨论】:

    标签: php mysql list loops


    【解决方案1】:

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

    注意:代码可以稍微改进一下,我只是很快就做了。

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

    【讨论】:

    • 现在我稍微更新一下代码,添加类别和子目录。 it.category 有自己的表,subcat 也有自己的但包含类别索引。我循环遍历年->月->类别->子目录->文件名。新问题是这里的文件名重复了很多次。年月等工作正常。我如何防止这种行为。
    • 我不确定你的文件名为什么重复,但我确定这只是一个逻辑问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 2011-02-23
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    相关资源
    最近更新 更多