2010-05-12 16 views
2

我在使用PHP和MySQL的网站上实现相当简单的日历。我希望能够处理无限期重复的日期,并且不确定最佳做法。如何处理无限重复的日期

对于时间有限的重复事件似乎是有道理的,只是在时间范围内的每个事件添加到我的数据库表,并将它们组合某种形式的递归的ID。

但如果没有限制多久事件重复,是它更好地

一)把记录在数据库特定的时间框架(例如,未来2年),然后定期检查和补充随着时间的推移新纪录 - 这个问题是,如果有人在寻找3年前,事件将不会显示

b)实际上没有每个事件的记录,而是当我检查我的php代码对于特定时间段内的事件,计算在此时间段内将发生重复事件 - 问题在于,这意味着没有针对每个事件的特定记录,当我想要时, o将其他信息(出席等)与该事件联系起来。它似乎也像它可能是一个有点慢

有没有人尝试这些方法之一?如果是的话它是如何工作的?还是有一些其他巧妙的狡猾狡猾的方法我失踪了?

+0

好了,所以它似乎是共识是去与(b)和只有当我需要与事件的东西联系起来建立在数据库的条目。积分Maxem因为他是第一个,但非常感谢大家,非常感谢 – Addsy 2010-05-12 12:51:54

回答

1

我会采取方法b,如果有人添加了一些东西,我会创建一个“真实”的事件条目。

编辑: 多少周期性事件,你希望和那会是什么样的周期性事件的? (如:每周,每两周等)

+0

感谢您的回应。是的,没有想到将2合并 - 听起来这可能是迄今为止最好的选择。如果可能的话,我希望能够很灵活地重复 - 以及每周,每个星期一,每个月等,我想包括诸如“本月的最后一个星期五”等。 – Addsy 2010-05-12 12:19:01

1

我会创建一个重复事件的单个记录。然后,如果有更多的信息需要添加到特定的日期,我会创建一个附件的记录,并引用重复的事件。

+0

好,太好了,谢谢。与Maxem的建议类似,因为单个记录事件只是在某人将某事物与它关联时才创建。我感觉一个计划正在形成...;)干杯 – Addsy 2010-05-12 12:21:07

1

第三投给选择B - 理由是该数据应仅被查询在有限的时间范围内(即,开始和结束)。出于性能方面的原因,我建议除了存储第一次出现的日期/时间外,还要保存数据库中最后一次出现的次数和次数。

C.

+0

太好了,谢谢!所以听起来组合是要走的路 – Addsy 2010-05-12 12:45:44

0

从我的经验,产生周期性日期和检查,如果一个特定的日期是在这种模式是不是所有的坏的性能代价。一年只有365天。 10,000天已经差不多30年了。这意味着,在实际情况下,输入/输出的大小相对较小。

这个库可以帮助(但它的JavaScript):http://github.com/mooman/recurring_dates