gpt4 book ai didi

mysql - 当天发生事件的日期列表

转载 作者:太空宇宙 更新时间:2023-11-03 10:58:01 25 4
gpt4 key购买 nike

我有一个事件表,每个事件都有一个开始日期和一个结束日期。

我需要显示日期列表并显示每天发生的事件。

例如假设我有一个在周一至周三运行的事件和另一个在周二至周四运行的事件我正在尝试创建一个这样的表:

Mon: Event 1
Tue: Event 1, Event 2
Wed: Event 1, Event 2
Thu: Event 2

我能看到的唯一方法是每天运行一个查询,或者加载给定日期范围内的所有事件,然后在我的代码中复制它们(如果它们持续超过一天)。这两种方法看起来都很老套,我确定我遗漏了一些东西。

有没有更简洁的方法来做到这一点?

结构:

id         INT
name VARCHAR
start_date DATE
end_date DATE

当前查询(略微简化,因为此数据库结构令人震惊):

SELECT *
FROM events
WHERE start_date <= $somedate
AND end_date >= $somedate

...其中 $somedate 是一个给定的日期。 (是的,我在我的代码中正确地转义了它!)

最佳答案

选择特定日期范围内的事件(我假设是特定月份)。然后循环那个月的几天,并有另一个内部循环显示该日期发生的所有事件。

<?php
$events = getEvents(); // some function that returns events from database

echo '<ol class="calendar">';
for ($i = 1; $i <= cal_days_in_month(); $i++) {
echo '<li>';

$beginning = mktime(0, 0, 0, date('n'), $i, date('Y'));
$end = mktime(23, 59, 59, date('n'), $i, date('Y'));
$events_on_day = array();

foreach ($events as $event) {
if ($event->start_date <= $end && $event->end_date >= $beginning) {
$events_on_day[] = $event;
}
}

if ($events_on_day > 0) {
echo '<ul>';
foreach ($events_on_day as $event_on_day) {
echo '<li>' . $event_on_day->name . '</li>';
}
echo '</ul>';
}
}
echo '</ol>';
?>

关于mysql - 当天发生事件的日期列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18512725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com