预约功能PHP MySQL计划提前一年提供

时间:2014-08-19 07:41:32

标签: php mysql date calendar schedule

我在为私人教练建立预约预约网站时遇到了很多麻烦。要充分理解为什么我遇到这么多麻烦,请耐心等待,让我解释一下。我想使用这个免费的自适应日历来获取我的日历的外观和感觉,因为它具有响应性,我喜欢它的外观,尽管我会对它进行一些小的改动,比如配色方案。如果你转到下面的链接,你会看到它的演示:

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 />";
}
?>

1 个答案:

答案 0 :(得分:0)

  1. 当这个日历的整个想法是内联加载事件时,你为什么要将它们发送到一个单独的页面?
  2. 在你的json中,我只会传递给定日期的可用时间段,以使你的前端逻辑尽可能基本。通过浏览当天的事件,找出服务器端仍然可用的时隙。这非常简单(对约会进行排序,测量事件x结束和事件x + 1开始之间的时间)。
  3. 小心并发。
  4. 存储和检索日程安排和约会(您是否也考虑过定期约会?)可能会变得复杂。你可以阅读Martin Fowler,他有一篇关于建模时间表和日历的优秀文章。