我一直在整理一个简单的线性每周事件日历脚本,该脚本从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子句?
谢谢!
答案 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;
}
请客。现在,我需要研究它以完全掌握他的操作方式。