在PHP日历上显示事件

时间:2010-04-08 18:16:24

标签: php mysql calendar

我想问一下我的数据库中是否有一个事件表,例如

description | startdt             | enddt
event1      | 2010-04-01 10:00:00 | 2010-04-01 13:00:00
event2      | 2010-04-09 14:00:00 | 2010-04-09 18:00:00
event3      | 2010-04-30 11:00:00 | 2010-05-02 16:00:00

我已经创建了一个php日历,如何将这些上述事件显示在我的日历上,以便它看起来像谷歌日历?例如在2010-04-01上,它将在月历上显示“event1”。

谢谢。

1 个答案:

答案 0 :(得分:1)

假设您已经预先计算了$ year和$ month变量以显示日历网格,那么您将从数据库中获取如下数据:

$query = <<<EOF
SELECT DAY(startdt) AS day, description
FROM table
WHERE (YEAR(startdt) = $year) AND (MONTH(startdt) = $month)
EOF;

$stmt = mysql_query($query) or die ('Query error: ' . mysql_error());

$events = array();
while($row = mysql_fetch_assoc($stmt)) {
   $events[$row['day']][] = $row['description']; // might have multiple events on one day, so store as an array of events
}

然后在构建日历时,检查$events数组中是否存在$ day并输出您想要的描述:

for ($day = 1; $day <= 31; $day++) {
    if(isset($events[$day])) {
         ... display event descriptions
    }
}

当然,如果你有超过几天的事件,那么你将不得不修改一些东西来处理它,但这应该让你开始至少一天的事件。