我正在私人日托中心为一小部分父母建立一个网站.该网站的一个理想功能是拥有一个日历,您可以在其中选择负责清理区域设置的日期.现在,我已经制作了一份工作日历.我在网上发现了一个简单的脚本,我修改了abit以符合我们的目的.从技术上讲,它运作良好,但我开始怀疑我是否真的应该改变它从数据库中提取信息的方式.
日历按月呈现,并使用for循环绘制为表格.这意味着每次加载页面时,所述for循环运行28-31次,具体取决于月份.为了介绍谁负责每天清洁,我已经添加了一个MySQL数据库的调用,其中存储了每个成员的清洁日.伪代码看起来像这样,简化:
Draw table month
for day=start_of_month to day=end_ofmonth
type day
select member from cleaning_schedule where picked_day=day
type member
Run Code Online (Sandbox Code Playgroud)
这意味着页面的每次重新加载都会对数据库进行至少28次SELECT调用,而对我来说,它似乎既低效又可能容易受到DDOS攻击.是否有更有效的方法来获得相同的结果?还有更复杂的预订日历,他们如何处理?
SELECT picked_day, member FROM cleaning_schedule WHERE picked_day BETWEEN '2012-05-01' AND '2012-05-31' ORDER BY picked_day ASC
Run Code Online (Sandbox Code Playgroud)
您可以循环查询该查询的结果,每行将按照您的选择范围中的日期和人员按升序排列.