構築しなければならない予約システム (PHP/Mysql) で日数を検証するのに問題があります。以前も同様の質問を投稿しました予約制の日程ですが、何かが変わりました。
私が抱えている問題; オフィス内にスタジオ・会議室をご用意しております。期間限定で貸し出し中です。ユーザーは、部屋を借りたい日、時間、時間を選択します。
予約手順:
1- ユーザーはスタジオを借りたい月を選択します。2- ユーザーはスタジオを借りたい日を選択します。(ここで行き詰まります) 3- ユーザーはキーを取得したい時間を選択します。
キーの受信可能時間:
00:00:00 - 06:00:00
06:00:00 - 12:00:00
12:00:00 - 18:00:00
18:00:00 - 24:00:00
これらの時間は、ユーザーがドアの鍵を受け取る時間です。
4- ユーザーは、スタジオを借りたい時間を選択します。
問題: スタジオのレンタル日は確認できますが、正確な時間は確認できません。PHPで時間をチェックする方法を知っています。しかし、例えば;
ユーザー 1 は、2012 年 4 月 27 日の 12:00:00 から 18 時間後までスタジオを借ります。ユーザー 2 は、2012 年 4 月 26 日の 18:00:00 から 12 時間後までスタジオを借りたいと考えています。ユーザー 3 は、4 月 28 日にスタジオを借りたいと考えています。
ユーザー 2 が最大 4 月 27 日 12:00:00 までスタジオをレンタルできるかどうかを確認するにはどうすればよいでしょうか。また、ユーザー 3 が 28 日にスタジオをレンタルできるかどうかを確認し、06:00 以降に利用できることを確認するにはどうすればよいでしょうか。
データベース:
id int(11)
user_id int(11)
rental_name varchar(255)
key_receive_time varchar(255)
start_date int(11)
end_date int(11)
total_hours int(11)
私はこれを2日連続で行っていますが、まだクラックできません。解決策は簡単だと思いますが、おそらく間違った方向に検索します。
前もって感謝します。
クエリの例を編集します。
SELECT * FROM reservations
WHERE (start_date >= " . $start_block_1 . " AND end_date <= " . $end_block_1 . ")
OR (start_date >= " . $end_block_1 . " AND end_date <= " . $start_block_1 . ")
$start_block_1
とは、1 日の$end_block_1
タイムスタンプ 00:00:00 ~ 06:00:00ブロックを表します。
ユーザーがキーを受け取ることができるブロックが 1 日に 4 つあるため、このクエリを 4 回実行します。