繁体   English   中英

PHP MYSQL创建事件,没有jQuery日历的重复结束日期

[英]PHP MYSQL Creating events with no recurring end date for jquery calendar

我正在尝试!

我正在使用jquery,php和mysql制作事件日历。 创建的事件存储在mysql数据库中,然后取回并显示在日历中。 这些事件包含开始和结束日期。 如果用户要创建一个重复一周的活动,那么他可以使用日历的重复属性,并将重复结束日期设置为从事件开始的一周。

我被封锁的地方!

假设用户需要一个不会像生日那样结束的周期性事件或每周重复一次的每周事件。 在这种情况下,我认为将每个事件插入数据库很多年不是一个好方法。 让我们再举一个案例,即用户创建2年的每日重复事件。 在这里,数据库将变得非常繁忙。

我在寻找什么!

有人可以为我提供一些有关如何管理没有结束日期结束日期 很长的重复事件的想法。

也许你需要三张桌子

  • event_base
    • 以及事件,名称,位置,持续时间和详细信息等。
  • event_instance
    • 对于重复发生的事件的实际实例
    • 仅在用户尝试查看该月/周/日等时创建实例。
    • 仅在该日期不存在实例时创建实例
    • 有原始日期和当前日期(以防万一该实例可以移动)
  • event_reoccurrence表
    • 带有结束日期字段。 如果结束日期为null,则没有结束日期。

这是一个示例event_instance表架构

  1. event_base_id
  2. event_reoccurrence_id (如果没有再次发生, 则为 null)创建事件的规则。
  3. original_created_for_date (如果用户移动实例,它将不会重新添加到原始日期)
  4. current_date (日历中显示的日期
  5. location_override
  6. duration_override
  7. 其他替代等

这是一个示例event_reoccurrence表架构(重发规则)

  1. event_reoccurrence_id
  2. event_base_id (无符号整数)
  3. day_of_week varchar(20)
  4. day_of_month varchar(20)
  5. day_of_year varchar(20)
  6. week_of_month varchar(20)
  7. week_of_year varchar(20)
  8. Year_of_year varchar(20)
  9. varchar(20)
  10. lastdate_of_reoccurrence日期

#2-#8中的值可以是单个数字,范围“ 2-6”,数字之间用逗号分隔或为空。

  • null表示无关紧要(无论此值如何都可能发生事件)
  • 某个数字:事件发生在该日期与数字匹配的日期
    • 工作日:5 =周五以外的其他日子均无法发生活动
  • 用逗号分隔的数字:当任何数字现在匹配时发生事件
    • 月:2、4、5 =事件可能在2月,4月和5月发生
  • 范围:事件发生在范围之间
    • 每月的天数:1-12 =事件可能发生在每月的1号到12号
  • 当每个非null字段匹配时,事件发生在该日期的日期。

因此,如果您检查日期,并且每个字段都为null或与该日期匹配,则该事件会在该日期发生。 也许每个事件可能有多个条目以构建复杂的模式。

一个月中的第一个星期是前7天,而不是第一个星期日。 如果week_of_month为3,一周中的某天为2,并且除事件ID外,其他所有内容均为null,则类似于每月的第三个星期二。

然后,当此人查看日历时,您请求该月每一天的所有重复发生的事件,并为每个匹配的事件创建实际事件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM