简单实用的PHP逻辑用于循环。

7 浏览
0 Comments

简单实用的PHP逻辑用于循环。

我之前提交过这个问题,但因为有人给我投了反对票并表示问题已经有答案了,所以没有人会回答。\n我知道这里有类似的帖子:\n

\n但它们没有回答我所要求的,即在使用除了纯PHP和MySQL之外的其他框架或工具/脚本的情况下,提供一个实际、简单且真实的逻辑示例来设置重复日历。\n我确实同意这篇文章http://martinfowler.com/apsupp/recurring.pdf很好,但它太抽象了,我无法理解。\n我知道还有其他“已经做到了这一点的系统”,但这是我的心头之患,我最终会解决它的 - 我只是想在途中得到一些帮助。\n所以,问题是:如何使用PHP和MySQL构建一个重复日历?

0
0 Comments

在过去的几年里,我曾在一个企业内部应用程序中构建过一个日历功能,并基本上是复制了我Palm中的重复选项。这对人们来说是有意义的,所以我认为它是成功的。但是它在数据库中存储的时候并不干净。我的代码最终需要进行大量的检查来确保数据的一致性,并采取各种规则来纠正如果发现有问题的话。幸运的是,在我开发的过程中,我们正在积极地使用它。

在存储方面,日历条目包含一个标志,用来指示它是否属于一个重复系列。如果不是,它是一个非重复的条目。如果是,编辑它会有一些选项,其中之一是在此条目处中断系列。重复条目会作为离散的项目放入数据库中;这是一种为了性能原因而进行的反规范化。除此之外,它意味着其他想要检查日历的代码不必担心重复项。我们通过要求系列始终有一个结束日期来解决“永无止境”的问题。

实际上,设置重复项涉及到在用户界面中使用JavaScript来控制不同的设置。数据库中的条目具有一系列的值,用于指示重复范围(例如每天、每周等)、重复步骤(例如每周1次、每2周1次等)以及任何变化(例如每周允许你说“每周一、每周三、每周四”)。

最后,我们还有一些逻辑,我没有完全实现,用来处理时区和夏令时问题。这很困难,因为你必须允许选择性地应用时区转换。也就是说,一些日历项将保持与最终用户所在地的本地时间一致,而其他日历项则固定在某个位置,并且可能或可能不会随着夏令时的变化而调整。在我解决这个问题之前,我离开了那家公司。

最后,我回答这个问题是因为我没有看到其他所有的问题。但是去阅读和理解那个PDF文件吧。

0
0 Comments

问题的出现是因为编辑逻辑“即时”不是用户真正想做的事情。他们更希望你作为一个程序员能够预见到他们想要做的事情,并为此提供规则-例如,他们不想自己计算每个月的第二个星期三。

解决方法是在MySQL中对重复性进行建模。可以使用Google的规范,将其存储在数据库中,并且在Stack Overflow上已经有相关讨论。Fowler的文章也提供了一些良好定义的类,可以在关系型数据库中表示。

这是一个困难的问题。虽然Stack Overflow希望你成功,但我们只能给你指引。我们不能强迫你去理解。

你之所以理解起来有困难是因为......你对面向对象的原则不熟悉吗?UML图对你来说是陌生的吗?还是有一些特定的概念你不太懂?如果你提出具体的问题,我们可以更好地帮助你。

好吧,我想真正的问题是,我遇到的大多数问题或需要创建的脚本都涉及将正在运行的东西进行修改,然后修复它并根据我当前的需求进行修改-我想这意味着我对它们一无所知。

我建议你编辑你的问题,专注于Fowler论文中的那些方面。相比于你提出的含糊而困难的问题,你会得到更多关于具体问题的帮助。

我明白了,我会尝试发布一个新的问题-有没有关于理解PHP面向对象基本原理的好资源?

这是一个好的起点。你也可以参考《PHP和MySQL Web开发》第四版。我把它当作桌面参考书,它涵盖了所有你想要构建的基本概念。

我读了Fowler的文章。它很好地规定了规则,但是如何轻松地存储和检索所需的信息呢?例如,我想获取未来两周的约会可用性。我看到Joe Celko做了很多疯狂的事情,不禁想到一些巧妙的查询可以很好地组合这些信息。但我还没有找到合适的方法。

0