Я делаю систему бронирования для школьного проекта, но теперь я застрял.
У меня есть страница, где вы можете проверить, есть ли свободные номера для определенной категории и даты.
Я знаю, что вам нужно сделать внутреннее соединение. Я использовал Google, но я понятия не имею, как это сделать.
Это в моей базе данных отелей:
У меня есть таблица номеров:
TABLE `rooms` ( `roomNR` int(11) NOT NULL, `catagory` varchar(11) DEFAULT NULL, `picLocation` varchar(50) DEFAULT NULL, PRIMARY KEY (`roomNR`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
И у меня есть таблица резервирования, где хранятся все резервации.
TABLE `reservation` (
`reservationID` int(11) unsigned NOT NULL AUTO_INCREMENT,
`userID` int(11) NOT NULL,
`roomNR` int(11) NOT NULL,
`start` date NOT NULL,
`end` date NOT NULL,
`price` float NOT NULL,
PRIMARY KEY (`reservationID`),
UNIQUE KEY `userID` (`userID`),
UNIQUE KEY `roomNR` (`roomNR`),
CONSTRAINT `reservation_ibfk_1` FOREIGN KEY (`roomNR`) REFERENCES `rooms` (`roomNR`),
CONSTRAINT `reservation_ibfk_2` FOREIGN KEY (`userID`) REFERENCES `users` (`userID`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
Это форма, которую я использую:
<form action="" method="GET">
<div>
<label for="StartDate">From</label>
<input type="input" name="startDate" id="startDate" readonly=""> <label for="EndDate">Till</label> <input readonly="" type="input" name="endDate" id="endDate">
<label for="Catagory">Catagory:</label>
<select name="Catagory" id="Catagory">
<?php
$catagorys = DB::Getinstance()->query('SELECT * FROM catagory');
if ($catagorys->count()) {
foreach($catagorys->results() as $catagory){?>
<option value="<?php echo $catagory->name; ?>"><?php echo $catagory->name; ?></option>
<?php }
}
?>
</select> <input type="submit" value="get available rooms" class="btn btn-default">
</div>
</form>
Я надеюсь, что кто-то может помочь мне!
заранее спасибо!
-- редактировать
Теперь, когда я смотрю на таблицу бронирования, не лучше ли хранить там и категорию?
WHERE
к подзапросу, ограничивая проверяемые резервирования. 03.10.2014date
илиdatetime
определенно совместимы и сопоставимы с вашим форматом хранения. 03.10.2014