周时间表:PHP in_array或jQuery插件

时间:2015-03-05 11:08:51

标签: php jquery calendar timetable

答案中不需要实际代码,只有最佳做法的好建议。

我需要在Bootstrap网站上显示一周时间表(1小时时段)以进行预订。时间段将具有以下状态之一:

  • 可用:绿色背景和'可用'文字,
  • 已预订:红色背景和“已被占用”#39;文字,
  • 不适用于预订:灰色背景和“不可用”'文本。

当用户点击可用时间段时,将显示模式/弹出窗口以供预订。

仅显示一周(=当前周)。最终用户可以点击箭头并查看下周的时间表。所以,我没有必要显示超过当前和下周的内容。

我想到了三种可能的解决方案:

  1. 创建一个MySQL表,每个可用时间段都有一条记录(自动使用cronjob)。这样我就可以在前端打印表数据了。 注意:如果您在网站上有许多时间表,我已经完成了这项工作并且效果很好但不是最佳的。

  2. 使用jQuery插件(如Fullcalendar)。显然即使我需要的是超级简单,Fullcalendar(或其他日历插件)也不适合这种用法。即使进行了大量的自定义,也无法做到这一点。

  3. 使用in_array()函数使用PHP动态构建时间表。 我们的想法是创建两个MySQL表,一个用于存储不可用的小时数,另一个用于预订。

    通过两个简单的查询,我可以获得2个数组(当前显示的那一周):' non_available_timeslots'和'预订'。

    当我构建周时间表(正常引导表)时,对于每个时隙我将控制两件事:

    a)如果日期/小时位于' non_available_timeslots' (如果是的话

    echo '<td class="not-available">Not available</td>'    
    

    .....否则继续指出b)
    b)如果日期/小时属于“预订”阵列中。 (如果是的话,

    echo '<td class="booked">Occupied</td>'  
    

    .....否则继续指出c)
    c)如果上述两个条件不匹配,

    echo '<td class="available"> Available</td>'  
    
  4. 你可以看到我想要做的事情非常简单。 我对解决方案3感兴趣

    从表现的角度来看,这是不是很糟糕? (注意,在in_array函数中要搜索的元素的绝对最大数量将等于时间表中的时隙数,因此15x7 = 105,但实际上可能只有50)。

1 个答案:

答案 0 :(得分:1)

从您的帖子中您已经确定了您将使用的解决方案。鉴于此,我只会创建一个带有列(status)的表,这对于&#34;不可用&#34;和#34;被占领&#34;。

我只使用一个表,因为您可能需要在几天/几周/几个月内获得另一个状态。您总是可以拥有多个包含同一个表中值的数组。

我认为你不得不考虑那些行(或时隙)的性能。我说:随身携带它并随着应用程序的增长进行调整。