Я собрал простой линейный сценарий еженедельного календаря событий, который вызывает записи из базы данных 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». Я могу создать / открыть div с этим, сразу после первого предложения if:
if ($showday) { ?><div class="daybox">
Это успешно открывает / создает новый div для каждого отдельного дня цикла foreach.
Проблема закрывается. Я попробовал соответствующий закрывающий код if show в конце foreach, но, оглядываясь назад, это было не то, что я искал, и, очевидно, это не сработало.
Мне кажется, что мне нужен способ определить, достигла ли я последней записи за данный день (т.е. событие_дата в моей базе данных), и основать на этом мое условие if. Но до сих пор я озадачен, как мне нужно сформулировать это.
Нахожусь ли я на правильном пути, и как бы я сформулировал свой последний пункт if?
Спасибо!