секция "сегодня/завтра"
Мне бы хотелось в секции выводить рандомно событие либо сегодняшнее , либо завтрашнее. в event_date(text) хранится дата события в формате дд.мм.гггг. Сегодня 29.01.2024 имеется две записи с датами 30.01.1949 и 29.01.1848. Если я правильно понимаю , мне нужно выловить день и месяц события и вывести его рандомно, но как это сделать? Подскажите пожалуйста
<section
style="position: relative; background-image: url(calendar.jpg); height: 100vh; display: flex; justify-content: center; align-items: center; text-align: center; color: #333; font-family: 'Arial', sans-serif;">
<?php
// Определяем сегодняшнюю дату
$today = date('Y-m-d');
// Определяем завтрашнюю дату
$tomorrow = date('Y-m-d', strtotime('+1 day'));
// Запрос к базе данных для выбора случайного события на сегодня или завтра
$sql = "SELECT * FROM events
WHERE (MONTH(event_date) = MONTH('$today') AND DAY(event_date) = DAY('$today'))
OR (MONTH(event_date) = MONTH('$tomorrow') AND DAY(event_date) = DAY('$tomorrow'))
ORDER BY RAND() LIMIT 1";
$result = $conn->query($sql);
// Проверка на наличие событий
if ($result !== false && $result->num_rows > 0) {
// Вывод случайного события
$row = $result->fetch_assoc();
?>
<div class="event"
style="position: relative; padding: 20px; background-color: rgba(255, 255, 255, 0.8); border-radius: 10px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);">
<h1 style="font-size: 2em; color: black; text-align: center;">
<?php
if ($row['event_date'] == $today) {
echo 'Сегодня';
} elseif ($row['event_date'] == $tomorrow) {
echo 'Завтра';
}
?>
</h1>
<img src="<?php echo $row['file_path']; ?>" alt="<?php echo $row['event_name']; ?>"
style="max-width: 100%; border-radius: 8px;">
<h1 style="font-size: 1.5em; margin-bottom: 10px;">
<?php echo $row['event_name']; ?>
</h1>
<p>
<?php echo $row['event_description']; ?>
</p>
</div>
<?php
} else {
// Добавим отладочный вывод для более детальной диагностики
echo '<p style="margin-top: 20px; font-size: 1.2em; color: #fff;">На выбранную дату нет событий.</p>';
if ($result === false) {
echo '<p style="font-size: 1.2em; color: #fff;">Ошибка выполнения запроса: ' . $conn->error . '</p>';
}
// Добавим отладочный вывод самого запроса
echo '<p style="font-size: 1.2em; color: #fff;">Debug Info: SQL Query: ' . $sql . '</p>';
}
?>
</section>
При данном коде - На выбранную дату нет событий.
Debug Info: SQL Query: SELECT * FROM events WHERE (MONTH(event_date) = MONTH('2024-01-29') AND DAY(event_date) = DAY('2024-01-29')) OR (MONTH(event_date) = MONTH('2024-01-30') AND DAY(event_date) = DAY('2024-01-30')) ORDER BY RAND() LIMIT 1
Ответы (1 шт):
у меня получился такой вариант.
<section
style="position: relative; background-image: url(calendar.jpg); height: 100vh; display: flex; justify-content: center; align-items: center; text-align: center; color: #333; font-family: 'Arial', sans-serif;">
<?php
// Определяем, что считать сегодняшним и завтрашним событием
$dayToday = date('d');
$monthToday = date('m');
$dayTomorrow = date('d', strtotime('+1 day'));
$monthTomorrow = date('m', strtotime('+1 day'));
// Выбираем случайную дату между сегодняшним и завтрашним днем
$random_date = mt_rand(0, 1) ? date('Y-m-d') : date('Y-m-d', strtotime('+1 day'));
$dayRandom = date('d', strtotime($random_date));
$monthRandom = date('m', strtotime($random_date));
if ($dayRandom == $dayToday && $monthRandom == $monthToday) {
$dateLabel = 'Сегодня';
} elseif ($dayRandom == $dayTomorrow && $monthRandom == $monthTomorrow) {
$dateLabel = 'Завтра';
} else {
$dateLabel = $random_date;
}
// Запрос к базе данных для выбора случайного события на сегодня или завтра
$sql = "SELECT * FROM events WHERE DAY(STR_TO_DATE(event_date, '%d.%m.%Y')) = $dayRandom AND MONTH(STR_TO_DATE(event_date, '%d.%m.%Y')) = $monthRandom ORDER BY RAND() LIMIT 1";
$result = $conn->query($sql);
// Проверка на наличие событий
if ($result !== false && $result->num_rows > 0) {
// Вывод случайного события
$row = $result->fetch_assoc();
?>
<div class="event"
style="position: relative; padding: 20px; background-color: rgba(255, 255, 255, 0.8); border-radius: 10px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);">
<h1 style="font-size: 2em; color: black; text-align: center;">
<?php echo $dateLabel; ?>
</h1>
<img src="<?php echo $row['file_path']; ?>" alt="<?php echo $row['event_name']; ?>"
style="max-width: 100%; border-radius: 8px;">
<h1 style="font-size: 1.5em; margin-bottom: 10px;">
<?php echo $row['event_name']; ?>
</h1>
<p>
<?php echo $row['event_description']; ?>
</p>
</div>
<?php
} else {
// Выводим сообщение, что на сегодня или на завтра нет события
echo '<h1 >На ' . $dateLabel . ' нет события.</h1>';
}
?>
</section>