Ik ben al 1 week bezig met het maken van een reservatie systeem voor een klein hotel. Bijna alles loopt al op rolletjes maar ik zit vast met wat queries.
Eerst een beeld, ik heb twee tabellen: bedrooms en reservations
bedrooms
-------------
room_id | room_type | room_type_id |
_______________________________
3 | Suite Single | 22
4 | Suite Single | 22
5 | Suite Double | 33
reservations
----------------
room_id | room_type_id | date_from | date_till
________________________________________
3 | 22 | yyyy-mm-dd | yyyy-mm-dd
5 | 33 | yyyy-mm-dd | yyyy-mm-dd
Het reservatie form geeft aan:
Room: krijg je dropdown menu met alle kamers uit 'bedrooms' tabel
Datum van: yyyy-mm-dd
Datum tot: yyyy-mm-dd
Bij submit word het room_type_id van de gekozen kamer gestuurd en de datums. Nou mijn probleem is meer een logica als sql probleem:
1. Als er meerdere 'Suite Single' kamers zijn komen ze allemaal in het dropdown menu, ik wil graag van elke room_type alleen maar 1 keer in het lijst. Maar geen idee hoe ik dat aanpak.
2. Er word gekeken in de 'reservations' tabel als de bepaalde room_type beschikbaar is op de gekozen datum. Momenteel werkt het checken op gekozen datums goed. Maar nu moet hij ook kijken als er een kamer van die room_type beschikbaar is. Als er een beschikbaar kamer is van die room_type moet hij de room_id van die beschikbaar kamer terug geven. En daar loop ik vast.
Misschien is mijn opzet van de 'bedrooms' tabel ook niet goed, ik word er niet veel wijs van. Ik heb al verschillende forums en google gesearched maar heb niks helpzaam gevonden.
Hier is het query dat kijkt als de kamer beschikbaar is. Het geeft een error dus er zit wat fout:
Best ingewikkeld allemaal maar ik ben ten einde van raad, misschien iemand die wat weet?
Eerst een beeld, ik heb twee tabellen: bedrooms en reservations
bedrooms
-------------
room_id | room_type | room_type_id |
_______________________________
3 | Suite Single | 22
4 | Suite Single | 22
5 | Suite Double | 33
reservations
----------------
room_id | room_type_id | date_from | date_till
________________________________________
3 | 22 | yyyy-mm-dd | yyyy-mm-dd
5 | 33 | yyyy-mm-dd | yyyy-mm-dd
Het reservatie form geeft aan:
Room: krijg je dropdown menu met alle kamers uit 'bedrooms' tabel
Datum van: yyyy-mm-dd
Datum tot: yyyy-mm-dd
Bij submit word het room_type_id van de gekozen kamer gestuurd en de datums. Nou mijn probleem is meer een logica als sql probleem:
1. Als er meerdere 'Suite Single' kamers zijn komen ze allemaal in het dropdown menu, ik wil graag van elke room_type alleen maar 1 keer in het lijst. Maar geen idee hoe ik dat aanpak.
2. Er word gekeken in de 'reservations' tabel als de bepaalde room_type beschikbaar is op de gekozen datum. Momenteel werkt het checken op gekozen datums goed. Maar nu moet hij ook kijken als er een kamer van die room_type beschikbaar is. Als er een beschikbaar kamer is van die room_type moet hij de room_id van die beschikbaar kamer terug geven. En daar loop ik vast.
Misschien is mijn opzet van de 'bedrooms' tabel ook niet goed, ik word er niet veel wijs van. Ik heb al verschillende forums en google gesearched maar heb niks helpzaam gevonden.
Hier is het query dat kijkt als de kamer beschikbaar is. Het geeft een error dus er zit wat fout:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| $avail = ("SELECT * FROM reservations, bedrooms WHERE reservations.room_type_id = '$type' AND reservations.room_id IS NOT bedrooms.room_id AND '$from' <= reservations.date_from AND '$till' >= reservations.date_from OR '$from' <= reservations.date_till AND '$till' >= reservations.date_till OR '$from' >= reservations.date_from AND '$till' <= reservations.date_till"); $check_avail = mysql_query($avail) or die (mysql_error()); if (mysql_num_rows($check_avail)) { //Room is not available $message = "No rooms available"; return $message; } else {// There is a room available $message = "There is a room available"; return $message; } |
Best ingewikkeld allemaal maar ik ben ten einde van raad, misschien iemand die wat weet?
MacBook Pro 2019 | Oppo Reno 2 | Panasonic Lumix TZ70