【问题标题】:PHP/SQL prevent writing certain times into tablePHP/SQL 防止将某些时间写入表中
【发布时间】:2017-05-03 01:47:39
【问题描述】:

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

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

【问题讨论】:

  • 您检查输入的开始时间是否不在现有开始时间和结束时间之间?你到底在问什么?
  • 在你的 PHP 动作页面中,你可以检查 startTime + 2 小时和关闭时间之间的时间戳,看看它是否不在上面。见secure.php.net/manual/en/ref.datetime.php
  • 可以在查询开始时间和结束时间之间试一试
  • 您可以添加一个标志列,并在其预订时将其设置为 1,并在每次更新时使用它来检查是否可以预订..

标签: php html mysql


【解决方案1】:

用户提交表单后,您可以通过此查询来查看提交时间是否已被占用:

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 或更多,则房间在提交时间内被占用。

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

【讨论】:

    猜你喜欢
    • 2013-06-09
    • 1970-01-01
    • 2022-07-08
    • 2018-03-23
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多