PHP/SQL 阻止将某些时间写入表

标签 php html mysql

我想我的问题可能有一个简单的解决方案,但我被卡住了。 我有一个 MYSQL-Table 和一个表单。用户输入填写表单。用户必须提供事件的开始时间。 例如8:00 点钟 和事件的持续时间。结束时间是根据持续时间计算的。因此,如果一个事件在 8 点开始,持续时间为 2 小时,则将在结束时间列中写入 10:00

现在的问题是,我如何防止用户可以在 9:00 填写事件,因为房间被 8 - 10 封锁了? 我感谢您的帮助! 干杯!

最佳答案

用户提交表单后,您可以获取提交时间并使用以下查询检查房间是否在该时间被占用:

SELECT COUNT(1)
FROM event as e
WHERE e.room = <room_number>
AND (<start_time_of_new_event> BETWEEN e.start_time AND e.end_time
    OR <end_time_of_new_event> BETWEEN e.start_time AND e.end_time)

start_time_of_new_event 将被提交开始时间值

end_time_of_new_event 将提交开始时间 + 持续时间

room_number -> 我假设你有更多的房间,可以举办事件

如果此查询返回 1 或更多,则房间在提交时间内已被占用。

如果您想禁用提交房间被占用的时间的可能性,您可以在显示表格之前选择被占用的时间段。并在脚本中决定哪些时间可以预订

关于PHP/SQL 阻止将某些时间写入表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41198363/

相关文章:

php - 添加到 PHP 生成的表的超链接

php - 如何在php中的两个不同数据库的两个不同表中插入数据

JQuery slideDown 无法按预期工作

php - div 上的背景图片没有响应

php - 将数据库结果存储到 PHP 中的变量

mysql - 完全外连接 mySQL - 缺少行

php - 将表格单元格值放入 PHP post 中

php - 更新mysql时间戳

jQuery 视差滚动在手机/平板电脑上禁用

mysql - 如何在 Perl 中用一个连接字符串连接 mysql 数据库和 Sybase 数据库?