Определите временной интервал в базе данных MySQL для системы бронирования

#php #mysql

#php #mysql

Вопрос:

Я делал приложение для бронирования объектов, которое позволяет пользователю искать объект с заданным типом объекта, датой, временем заезда и выезда.

Например: пользователь ищет площадку для бадминтона в 20-08-2016, а время регистрации — с 18:00 до 20:00 (время выезда), запись в базе данных существует с 18:00 до 20:00, она должна возвращать «Недоступно», пока это работает хорошо. Но если время регистрации составляет 18:30, а время выезда — 19:30, то есть между 18:00 и 20:00, он не будет отображать «Недоступно».

Итак, моя проблема в том, как сделать так, чтобы с 18:00 до 20:00 стало интервалом, и заблокировать время между регистрацией и временем выезда, чтобы оно не показывало другой результат.

Я пытался включить этот код в PHP, но он не работает

if($response["time_in"]<$time_in<$response["time_out"])
echo "Not Available";
else if($response["time_in"]<$time_out<$response["time_out"])
echo "Not Available";

Это весь мой search.php файл, который используется для извлечения данных из базы данных

PS: time_in эквивалентно времени регистрации, time_out эквивалентно времени выезда

 ?php
$con = mysqli_connect("mysql1.000webhost.com" , "a6539091_UD" , "0108981390" , "a6539091_UD") or die(mysql_error());

$venue = $_POST["Venue"];
$facility = $_POST["Facility"];
$date = $_POST["Date"];
    $time_in = $_POST["Time_in"];
    $time_out = $_POST["Time_out"];

$selectquery = mysqli_prepare($con, "SELECT * FROM SearchAva WHERE (Venue = ? AND Facility = ? AND Date = ? AND Time_in = ? AND Time_out = ?)");
mysqli_stmt_bind_param($selectquery, "sssss", $venue, $facility, $date, $time_in, $time_out);
mysqli_stmt_execute($selectquery);

mysqli_stmt_store_result($selectquery);
mysqli_stmt_bind_result($selectquery, $venue, $facility, $date, $time_in, $time_out);

$response = array();

while(mysqli_stmt_fetch($selectquery)){  
    $response["venue"] = $venue;
    $response["facility"] = $facility;
    $response["date"] = $date;
    $response["time_in"] = $time_in;
    $response["time_out"] = $time_out;
}

if($time_in>$response["time_in"] amp;amp; $time_in<$response["time_out"])
 echo "Not Available";

    else if($time_out>$response["time_in"]amp;amp; $time_out<$response["time_out"])
 echo "Not Available";

echo json_encode($response);

mysqli_stmt_close($selectquery);
mysqli_close($con);
?>  
  

Комментарии:

1. в вашем цикле while есть какая-то проблема. Проверьте свою логику

2. @DipanwitaKundu но это хорошо работает без двух операторов if … вы можете быть более конкретными? спасибо = D

3. в чем разница между $time_in и $response["time_in"] тем, как вы вводите значение $ time_in в $response["time_in"]

4. @DipanwitaKundu $time_in — это переменная, которая получает пользовательский ввод, $response [«time_in»] — это массив, который хранит пользовательский ввод

5. но вы помещаете ` $response [«time_in»] = $ time_in;` внутри цикла while