【问题标题】:Appointment booking feature PHP MySQL schedule available times one year in advance预约功能 PHP MySQL 时间表可用时间提前一年
【发布时间】: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


    【解决方案1】:
    1. 既然这个日历的整个想法是内联加载事件,为什么要将它们发送到单独的页面?
    2. 在您的 json 中,我只会传递给定日期的可用时间段,以使您的前端逻辑尽可能基本。通过浏览当天的事件,找出服务器端仍然可用的时间段。这相当简单(对约会进行排序,测量事件 x 结束和事件 x+1 开始之间的时间)。
    3. 注意并发。

    存储和检索日程安排和约会(您是否也考虑过定期约会?)可能会变得复杂。您可以阅读 Martin Fowler,他有一篇关于建模时间表和日历的优秀文章。

    【讨论】:

      猜你喜欢
      • 2015-08-11
      • 2011-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多