【发布时间】:2014-10-12 05:42:40
【问题描述】:
我在为私人教练建立预约网站时遇到了很多麻烦。要完全理解为什么我会遇到这么多麻烦,请耐心等待,让我解释一下。我想将这个免费的响应式日历用于我的日历的外观和感觉,因为它是响应式的,我喜欢它的外观,尽管我会对其进行一些小的改动,比如配色方案。如果您转到下面的链接,您将看到它的演示:
http://tympanus.net/Development/Calendario/index2.html
如果您点击返回到 2012 年 11 月的日历箭头,您会看到某些日子上有圆圈,表示这些日子有活动。如果您单击圆圈,则会出现一个窗口,该窗口应该提供有关该事件的信息。这些事件是从 JSON 文件中获取的,该文件的格式是键的日期,值是 URL。当用户单击事件而不是出现的窗口时,我希望他们被带到一个单独的页面,该页面将列出该特定日期培训师的可用时间段。它们的可用性将基于两件事:
1) 他们为自己设定的时间表,例如周一、周三、周五上午 10 点至下午 5 点。我会在网站上提供一个表单,他们可以像这样设置他们的时间表,然后将其保存到 MySQL 数据库并查询该数据库以填充 JSON 文件。
2) 在可用日期预订了哪些预约时段。这很复杂,因为预约时间可能会有所不同。一个会话可以持续 15、30、45 分钟、1 小时、2 小时和 30 分钟等。全部以 15 分钟为单位。因此,例如,如果用户选择的课程是 1 小时课程,我将不得不查询私人教练的日程安排,并将其与他每天预订的约会相匹配,并尝试找出他在哪里有 1 小时的空档可用然后在用户单击日历日期后,在单独的页面上将它们显示给用户。
我很难弄清楚这一点。我可以通过查询私人教练的时间表来填充 JSON 文件,然后使用类似于下面的技巧来获取明年的所有日期,以获取教练可用的某一天,例如下面的星期六。然后将该信息存储在 JSON 文件中,该文件将为日历脚本获取事件:
<?php
$day = 'saturday';
$step = 1;
$unit = 'W';
$start = new DateTime('NOW');
$end = clone $start;
$start->modify($day); // Move to first occurence of day
$end->add(new DateInterval('P1Y')); // Move to 1 year from start
$interval = new DateInterval("P{$step}{$unit}");
$period = new DatePeriod($start, $interval, $end);
foreach ($period as $date) {
echo $date->format('D, d M Y'), PHP_EOL;
echo "<br />";
}
?>
【问题讨论】:
标签: php mysql date calendar schedule