Хорошо, я делаю систему бронирования на PHP / Mysql, и до сих пор у меня есть просто базовая форма для проверки вставки данных, но я хочу улучшить ее, чтобы показывать только доступные временные интервалы.
Я уже использовал следующее после запроса ранее:
function mysql_fetch_rowsarr($result, $numass=MYSQL_BOTH) {
$i=0;
$keys=array_keys(mysql_fetch_array($result, $numass));
mysql_data_seek($result, 0);
while ($row = mysql_fetch_array($result, $numass)) {
foreach ($keys as $speckey) {
$got[$i][$speckey]=$row[$speckey];
}
$i++;
}
return $got;
}
$conn = mysql_connect($host,$user,$pass);
if (!$conn) {
die('Could not connect: ' . mysql_error());
};
//Get rodays date
date_default_timezone_set('GMT');
$check_time = date("Y-m-d");
mysql_select_db($db, $conn);
mysql_set_charset('utf8',$conn);
$booking_check = mysql_query("SELECT * FROM Booking WHERE Booking_Start LIKE '%$check_time%'");
//if no bookings just echo the entire form but if there is do the else
if (mysql_num_rows($booking_check) == 0) {
echo '
<select name="time" id="time">
<option value="0" selected>(Please Select:)</option>
<option value="00:00">00:00 - 00:55</option>
<option value="01:00">01:00 - 01:55</option>
<option value="02:00">02:00 - 02:55</option>
<option value="03:00">03:00 - 03:55</option>
<option value="04:00">04:00 - 04:55</option>
<option value="05:00">05:00 - 05:55</option>
<option value="06:00">06:00 - 06:55</option>
<option value="07:00">07:00 - 07:55</option>
<option value="08:00">08:00 - 08:55</option>
<option value="09:00">09:00 - 09:55</option>
<option value="10:00">10:00 - 10:55</option>
<option value="11:00">11:00 - 11:55</option>
<option value="12:00">12:00 - 12:55</option>
<option value="13:00">13:00 - 13:55</option>
<option value="14:00">14:00 - 14:55</option>
<option value="15:00">15:00 - 15:55</option>
<option value="16:00">16:00 - 16:55</option>
<option value="17:00">17:00 - 17:55</option>
<option value="18:00">18:00 - 18:55</option>
<option value="19:00">19:00 - 19:55</option>
<option value="20:00">20:00 - 20:55</option>
<option value="21:00">21:00 - 21:55</option>
<option value="22:00">22:00 - 22:55</option>
<option value="23:00">23:00 - 23:55</option>
</select>
';
} else {
//counter set to 23 because of 0
$counter = 23;
$i = 0;
$booked_times = mysql_fetch_rowsarr($booking_check);
$num_booked = mysql_num_rows($booking_check);
echo date("H", strtotime($booked_times[0]['Booking_Start']));
echo date("H", strtotime($booked_times[1]['Booking_Start']));
echo "<select name='time' id='time'>";
echo "<option value='0' selected>(Please Select:)</option>";
while($i<=$counter) {
//$H is used to compare if the hour slot is booked this adds a 0 to the front of the varible if under 10 for the 24H time format.
if ($i < 10){
$H = "0".$i;
} else {
$H = $i;
};
//Loop through the times that are booked and see if it is the same as the $H which is the current count of the loop so it should set skip to 1 if the time is booked.
for ($x = 0; $x < $num_booked; $x++){
if(date("H", strtotime($booked_times[$x-1]['Booking_Start'])) == $H){
$skip = 1;
}else{
$skip = 0;
};
};
if($skip != 1){
if ($i < 10){
echo '<option value="0'.$i.':00">0'.$i.':00 - 0'.$i.':55</option>';
$i++;
}else{
echo '<option value='.$i.':00">'.$i.':00 - '.$i.':55</option>';
$i++;
};
} else {
$i++;
};
};
echo "</select>";
};
Но я думаю, что это довольно примитивно, но я все еще работаю над этим, я думаю, что добираюсь туда, мне нужно отрезатьвсе время раньше времени на самом деле сейчас.