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 に答える