![](/img/trans.png)
[英]PHP MYSQL Creating events with no recurring end date for jquery calendar
[英]Creating recurring calendar events in PHP/MySQL
我正在尝试创建一个包含重复事件(例如每周或每月)的事件日历,但我无法理解它。 谁能给我一些指点? 这样做的最佳方法是什么? 任何帮助是极大的赞赏。 谢谢。
我知道这是一个旧帖子,但我也在想同样的事情。
我喜欢关于使用多个表来做这件事的人的解决方案,但实际上这一切都可以从一张表上完成。
使用以下数据创建一个表...
event_title event_text event_image and_other_fields_about_event recur_code (text) recur_mode (integer) start_date (date) end_date (date) recur_end_date (date)
recur_mode 可以有三种状态 - 0 = 不重复 1 = 重复并有结束日期 2 = 正在进行但没有结束日期(例如,如果您想将 1 月 1 日之类的内容添加为元旦)
如果日期重复,recur_code 将在其中存储 NULL 或代码。 应该在那里使用的代码是 PHP DateInterval 代码(即 1 年的 P1Y 或 P3M(3 个月)或 P7D(7 天)等) - 如果您想稍微缩小数据,您可以砍掉初始'P' 并稍后将其添加回来,因为最初的 'P' 始终是 P,它代表 Period 所以“Period 3 Months”“Period 7 Days”等。
然后当您从数据库中检索数据时 - 您使用以下搜索检索所有数据
( end_date >= CURDATE () ) OR ( ( recur_mode = 1 ) AND ( recur_end_date >= CURDATE () ) ) OR ( recur_mode = 2 )
(请注意,这不是正确的 SQL - 它只是您需要的 or 语句的基本示例)
然后,一旦您检索到数据,请使用带有 while 循环和 DateInterval 的 PHP 来增加 start_date,直到您再次出现下一次,同时确保如果 recur_mode 设置为 1,则开始日期不在 recur_end_date 之后。
全部在一张表中完成 - 如果您想要一个输入表单来放置代码,那么使用带有 dateinterval 值的隐藏字段,同时使用各种单选按钮来选择间隔 - 然后使用 jQuery onchange 更新隐藏值新的选择器值。
创建三个具有如下结构的表:
event
表
-id
-schedule_type
-schedule_id
-title
etc.
schedule
-id
-event_id
-datetime
schedule_recurring
表
-id
-event_id
-date
-time
在您的event
表中,schedule_type 字段将为 0 或 1,这将向应用程序指示调度信息存储在哪个表中,以及如何解释该信息。
非重复事件将存储在schedule
,日期时间:2011-09-06 00:00:00,重复事件将存储在schedule_recurring
,日期:'every 1st Monday',时间:09:30, 12:20(如果该事件在每个月的第一个星期一发生两次)。
也许这会帮助你开始!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.