10月1日授業での質問に対する回答

「指定された日付に空室の有無をどのように判定するか」?についての回答になります。

本システムでは利用できるお部屋の情報は「room」テーブルに保存されています。従って、roomテーブルには全てのお部屋の情報が存在するので、1日で宿泊できるお部屋の数は、roomテーブルのレコード数となります。

上記のことから、単純に空室の有無を判定する方法としては、「全部屋数-予約済み部屋数=0ならば空室なし」といえます。

ではこれをどのようにプログラミングするのか?ですが

①全部屋数を求める。

 「SELECT * FROM room」を発行し、mysqli_num_rors()にて全部屋数を取得する。

②指定した日付の予約数を求める。※日付を2021年9月10日とすると

 「SELECT * FROM reserve WHERE reserve_date = ‘2021-9-10’」 を発行し、mysqli_num_rors()にて予約件数を取得する。

③以上の結果から、全部屋数と予約済件数から空きがあるかをIF文にて判定する。

以上の手続きで空きの有無は判定できると思います。

ただ、空室数を取得する場合、現実的には上記のような面倒な手続きはしません。以下のようにもう少しスマートに処理します。このSQL文を発行するだけで取得できます。このあたりはPHPではなくSQLの領域になりますが。

SELECT SUM(1) AS 空室数 FROM room WHERE room_no NOT IN (SELECT room_no FROM reserve WHERE date(reserve_date) = ‘ 2021-9-10 ‘)