多个日期范围内每个日期的HTML表

时间:2018-10-02 13:15:16

标签: php sql

我目前有一个存储一些事件的表,它看起来像这样:

+----+---------+------------+
| ID |   Name  |    date    |
+----+---------+------------+
|  1 | Event1  | 2018-10-01 |
|  2 | Event2  | 2014-10-01 |
|  3 | Event3  | 2014-10-04 |
+----+---------+------------+

然后,对于每个日期,我将其显示在多个HTML表格中:

$current_date = null;


while ($donnees = $reponse->fetch()) {
   $date = $formatter->format(date_create($donnees['date'])); //I translate the dateformat in french

   if ($date != $current_date) {
      $current_date = $date;
      echo "<table class='table table-menu'>";
      echo "<thead class='thead-light'><tr><th>{$current_date}</th></tr></thead>";
      echo "<tbody>";
   }

   echo "<tr><td>" . $donnees["name"] . "</td></tr>";
}
echo "</tbody></table>";

它显示了这个(这是我所期望的): https://imgur.com/a/BHzoFjY(对不起,日期为法语)

现在,我想扩展我的桌子,以便可以在几天内发生一些事件:

+----+---------+----------------+--------------+
| ID |   Name  |   date_start   |   date_end   |
+----+---------+----------------+--------------+
|  1 | Event1  |   2018-10-01   |  2018-10-01  |
|  2 | Event2  |   2014-10-01   |  2018-10-05  |
|  3 | Event3  |   2014-10-03   |  2018-10-05  |
+----+---------+----------------+--------------+

目标是获得与以前大致相同的HTML表,例如:https://imgur.com/a/KuPyoqe

如果您想要一个真实的例子,可以访问以下网站:https://vide-greniers.org/01-Ain?_otid=home-list 它显示了法国任何地方的很多车库销售,我正尝试在小城市的活动中做同样的事情!

一种可能的解决方案是日历表,但我不知道它是如何工作的,并且,如果可能的话,我只想在一个表上工作(听起来更容易...)

非常感谢您的宝贵时间! :)

1 个答案:

答案 0 :(得分:0)

我认为您只需要更改if语句的逻辑即可。

$current_date = date("Y-m-d");
while ($donnees = $reponse->fetch()) {
   $date_start = date_create($donnees['date_start']))
   $date_end = date_create($donnees['date_end']);
   if ($date_start <= $current_date && $date_end >= $current_date) { 
      echo "<table class='table table-menu'>";       
      echo "<thead class='thead-light'><tr><th>";
      echo  $formatter->format($current_date);
      echo "</th></tr></thead><tbody>";
   }
   echo "<tr><td>" . $donnees["name"] . "</td></tr>";
   echo "</tbody></table>";
   $current_date = date("Y-m-d", strtotime("$current_date +1 day"));
}