我正在使用jquery,php和mysql创建一个事件日历。创建的事件存储在mysql数据库中,然后重新获取并显示在日历中。事件包含开始和结束日期。如果用户想要创建一个例如一周重复的事件,那么他可以使用日历的重复属性并将重复结束日期设置为从事件开始的一周。
假设用户需要一个周期性事件,其结果如生日或每周重复一次的每周事件。在这种情况下,我认为将每个事件插入数据库多年并不是一个好方法。让我们看另一个案例,用户创建2年的每日重复事件。这里数据库将变得非常人满。
有人可以告诉我如何使用无结束日期或非常长的结束日期管理重复活动。
答案 0 :(得分:0)
也许你需要三张桌子
以下是一个示例event_instance表架构
这是一个示例event_reoccurrence表模式(重新发生规则)
#2 - #8中的值可以是单个数字,范围“2-6”,用逗号分隔的数字或null。
因此,如果您检查日期并且每个字段都为空或与该日期匹配,则事件发生在该日期。也许每个事件可以有多个条目来构建复杂的模式。
每个月的第一天是7天,而不是第一个星期天。如果week_of_month为3,星期几为2,除了事件ID之外其他所有内容都为空,就像每个月的第三个星期二一样。
然后,当此人查看日历时,您会针对该月的每一天请求所有重复发生的事件,并为每个匹配的事件创建实际事件