答案中不需要实际代码,只有最佳做法的好建议。
我需要在Bootstrap网站上显示一周时间表(1小时时段)以进行预订。时间段将具有以下状态之一:
当用户点击可用时间段时,将显示模式/弹出窗口以供预订。
仅显示一周(=当前周)。最终用户可以点击箭头并查看下周的时间表。所以,我没有必要显示超过当前和下周的内容。
我想到了三种可能的解决方案:
创建一个MySQL表,每个可用时间段都有一条记录(自动使用cronjob)。这样我就可以在前端打印表数据了。 注意:如果您在网站上有许多时间表,我已经完成了这项工作并且效果很好但不是最佳的。
使用jQuery插件(如Fullcalendar)。显然即使我需要的是超级简单,Fullcalendar(或其他日历插件)也不适合这种用法。即使进行了大量的自定义,也无法做到这一点。
使用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>'
你可以看到我想要做的事情非常简单。 我对解决方案3感兴趣。
从表现的角度来看,这是不是很糟糕? (注意,在in_array函数中要搜索的元素的绝对最大数量将等于时间表中的时隙数,因此15x7 = 105,但实际上可能只有50)。
答案 0 :(得分:1)
从您的帖子中您已经确定了您将使用的解决方案。鉴于此,我只会创建一个带有列(status
)的表,这对于&#34;不可用&#34;和#34;被占领&#34;。
我只使用一个表,因为您可能需要在几天/几周/几个月内获得另一个状态。您总是可以拥有多个包含同一个表中值的数组。
我认为你不得不考虑那些行(或时隙)的性能。我说:随身携带它并随着应用程序的增长进行调整。