0

我有这样的 t_meeting:

meeting_date | meeting_from | meeting_to | meeting_room

示例我有这样的数据:

2013-09-03   | 08:00        | 09:00      | Meeting 1
2013-09-03   | 09:00        | 10:00      | Meeting 1

现在,如果会议时间已被预订,如何防止用户添加会议。例如,如果用户想要在相同日期和会议室但不同时间添加会议。

2013-09-03   | 08:30        | 09:00      | Meeting 1 <-- how to prevent it

我的意思是,如何阻止时间范围。我们看到 08:30 仍在预订的时间范围内。

到目前为止,这是我的 SQL 代码:

$check_meeting = mysql_query("SELECT * FROM t_meeting WHERE meeting_date = '$meeting_date' && meeting_room = '$meeting_room' && meeting_from >= '$meeting_time_from' && meeting_from <= '$meeting_time_from' && meeting_to <= '$meeting_time_to' && meeting_to >= '$meeting_time_to'");                 

if(mysql_num_rows($check_meeting) > 0)
{
echo "<div class='warns errors'>Duplicate data meeting!</div>";
}
else
{query save}
4

2 回答 2

2
WHERE `meeting_date` = $date
  AND `meeting_from` <= $to
  AND `meeting_to` >= $from

如果上面的条件返回任何东西 - 那么给定的间隔与已经预订的间隔相交

于 2013-09-03T01:49:03.137 回答
2

指定重叠的条件是会议在任何现有会议结束之前开始,并且会议在任何现有会议开始之后结束。在 SQL 中,这是:

SELECT *
FROM t_meeting
WHERE meeting_date = '$meeting_date' AND meeting_room = '$meeting_room' AND
      meeting_from <= '$meeting_time_to' AND
      meeting_to >= '$meeting_time_from';
于 2013-09-03T01:50:21.993 回答