PHP:检测重复列结果的结尾(日历日)

时间:2018-09-07 16:24:02

标签: php mysql if-statement calendar

我一直在整理一个简单的线性每周事件日历脚本,该脚本从MYSQL数据库中调用条目。它显示一种“ 8天工作周”(包括周日至周日)

我的MYSQL查询如下:

$results = $dbh->query('SELECT * FROM calendar WHERE YEARWEEK(event_date) = YEARWEEK(NOW()) OR (WEEKDAY(event_date) = 6 AND YEARWEEK(event_date) = YEARWEEK(NOW()) + 1) ORDER BY event_date ASC');

当给定的一天有多个事件条目时,我不会重复重复日期/日期标题:

$currentday = '';
$showday = true;
foreach($results as $row) {
  $weekday = date("l", strtotime($row['event_date'])); {

  if ($currentday != $row['event_date']) {
     $showday = true; 
     $currentday = $row['event_date'];
  }
  if ($showday) {
     $weekday = date("l", strtotime($row['event_date'])); 
     if($weekday == "Sunday") {
        echo "<h3 class='sunday'>";
        echo $weekday;
     }
     else {
        echo "<h3>";
        echo $weekday; 
     }
     echo date("F j", strtotime($row['event_date']));
     $showday = false;          
  }

}

...,然后是其余详细信息。

一切正常。

我现在要完成的工作是通过HTML挂钩对每天的结果进行可视化分组。

为此,我正在尝试将一个div类别中的每天事件分组为一个“ daybox”类。我可以在第一个if子句之后创建/打开div:

if ($showday) { ?><div class="daybox">

这将成功为foreach循环的每一天打开/创建一个新的div。

问题在于将其关闭。我在foreach末尾尝试了一个相应的$ showday结束代码,但是回想起来,这不是我想要的,而且显然没有用。

我想我需要的一种方法是确定是否在给定的一天(即数据库中的event_date)到达了最后一个条目,并以此为基础建立if子句。但到目前为止,我很困惑如何阐明这一点。

我在正确的轨道上,我将如何制定我的最终if子句?

谢谢!

2 个答案:

答案 0 :(得分:0)

嗯,这不是真正的PHP解决方案,但是我找到了可以使用的解决方法。

我更改了这一行:

if ($showday) { ?><div class="daybox">

对此:

if ($showday) { echo "</div><div class='daybox'>"; }

这使我在日历第一天之前异常关闭了div标签,但是我通过在我的foreach循环之外放置一个开始的div标签来协调HTML。 (就我而言,我已经有一个“本周”标题的h2,所以现在将标题包裹在div中。)

这适用于此特定用例,但是如果有人有正确的PHP答案,请随时提供。

答案 1 :(得分:0)

我的朋友Anthony(虽然不是真正的PHP专家)是一名铁杆程序员,但提供了完成此任务的实际代码。

在$ weekday = date ...行下,上面的代码已替换为:

if ($currentDay != $weekday) {
    if ($currentDay != '') {
        echo "</div>";
    }
    $currentDay = $weekday;
    $showday = true;
    echo "<div class='daybox'>";
}
?>
 <section class="calendar-item">
    <?php 
        if ($showday) {
            if ($weekday == "Sunday") {
                echo "<h3 class='sunday'>";
            } else {
                echo "<h3>";
            }
            echo $weekday;?>
            </h3><p class="date-detail"><?php
            echo date("F j", strtotime($row['event_date'])); ?></p><?php
            $showday = false;           
        }

请客。现在,我需要研究它以完全掌握他的操作方式。