Как проверить доступность номера, используя PHP JAVA SCRIPT AND QUERY - PullRequest
0 голосов
/ 10 апреля 2019

Я строю систему бронирования отелей с использованием PHP JAVASCRIPT и MYSQLi.У меня есть страница, на которой пользователь должен определить свои критерии поиска, такие как поиск доступной комнаты по гостям по детям по городам по цене по типу комнаты.до сих пор я успешно внедряю, но проблема в том, как проверить наличие номеров, используя дату заезда и проверки.

Вот код для поиска комнаты по гостям детьми по городам по цене и типу комнаты.Я не знаю, чтобы проверить доступность, используя мой код.

HTML-код для критериев поиска:

Для цены:

<div class="checkbox">  
<select id="price">
<option value=""> Select Range of Price in Rs</opiton>
<option value="1000-1999">1000-1999 </option>
<option value="2000-2999">2000-2999 </option>
<option value="3000-3999">3000-3999 </option>
<option value="4000-4999">4000-4999 </option>
<option value="5000-5999">5000-5999 </option>
<option value="6000 +">6000+</option>
</select>
</div>

тот же код для подсчета детей, количестводля взрослых, город и тип номера

Для даты заезда и отъезда:

<div class="checkbox">
<label for="ch7">Check-in Date</label>
<input  type="text" class="datepickerIn" placeholder="Check-in Date" id="checkin" name="checkin" >
<label for="ch7">Check-out Date</label>
<input  type="text" class="datepickerOut" placeholder="Check-out Date" id="checkout" name="checkout" >
 </div>

Код Java Script для вызова ajax с использованием идентификатора.

JAVA Script для регистрациии дата выезда:

 //Ajax call when user changes the check in and check out date
    $('#checkout').change(function(){
        var hotel_city = document.getElementById("hotel_city").value;
        var Room_Type_Name = document.getElementById("Room_Type_Name").value;
        var count_of_travels = document.getElementById("count_of_travels").value;
        var count_of_childerns = document.getElementById("count_of_childerns").value;
        var price = document.getElementById("price").value;
        var checkin = document.getElementById("checkin").value;
        var checkout = document.getElementById("checkout").value;

       var obj = { "hotel_city": hotel_city, "Room_Type_Name": Room_Type_Name, "count_of_travels": count_of_travels,"count_of_childerns":count_of_childerns,"price":price,"checkin":checkin,"checkout":checkout};
        var myJSON = JSON.stringify(obj);
        $.ajax({

            url: "searchHotelsByDates.php",
            dataType: "html",
            type: 'POST',
            data: myJSON,
            success: function (data) {
                $("#result").html(data);
            }
        });
    });

SQL: Таблицы - отели [hotel_id, hotel_name, hotel_city] комната [room_id, Hotel_Id (FK), удобства, room_type (FK), count_of_travels, count_of_childerns] room_type [Room_Type_Id,Room_Type_Name] резервирование [booking_id, check_in, check_out, room_id (FK), hotel_id (FK), User_Email (FK)]

session_start();
    include "required/connection.php";



    $str_json = file_get_contents('php://input');
    //Decoding received JSON to array
    $response = json_decode($str_json,true); 
    //Get values

    $hotel_city = $response['hotel_city'];
    $Room_Type_Name = $response['Room_Type_Name'];  
    $count_of_travels = $response['count_of_travels'];  
    $count_of_childerns= $response['count_of_childerns'];
    $price= $response['price']; 
    $split_price=explode("-",$price);
    $min = $split_price[0];
   $max = $split_price[1];
   $checkin =$response['checkin'];
   $checkout =$response['checkout'];

    //Concatenate sql string considering users inputs
    //$sql = "SELECT * FROM room";
    if($hotel_city!=="" || $count_of_travels !=="" || $Room_Type_Name!=="" ||$count_of_childerns!==""||$min!==""||$max!=="" ||$checkin!=="" || $checkout!=="" ) {
        $sql = "SELECT *.reservation, room.room_id,room.short_description,room.count_of_travels,room.count_of_childerns,room.price,hotels.hotel_id,hotels.hotel_name,hotels.hotel_city,hotels.hotel_picture,room_type.Room_Type_Id,room_type.Room_Type_Name FROM hotels INNER JOIN room ON room.Hotel_Id=hotels.hotel_id INNER JOIN room_type on room.room_type=room_type.Room_Type_Id INNER JOIN on  reservation  Where";

    }
     if($hotel_city!=="" && $count_of_travels !=="" && $Room_Type_Name!=="" && $count_of_childerns!=="") {
         if($min=="" && $max=="")
         {
             $sql =  $sql.  " hotel_city='$hotel_city' AND count_of_travels='$count_of_travels' AND Room_Type_Name='$Room_Type_Name' && count_of_childerns='$count_of_childerns' ORDER by hotels.hotel_name,room_type.Room_Type_Name";

         }
         else
         {
             if($min!=="" && $max=="")
             {
                  $split_min=explode("+",$min);
                  $sql =  $sql.  " hotel_city='$hotel_city' AND count_of_travels='$count_of_travels' AND Room_Type_Name='$Room_Type_Name' && count_of_childerns='$count_of_childerns' AND price >= '$split_min[0]' ORDER by hotels.hotel_name,room_type.Room_Type_Name";
             }
             else
             {
                $sql =  $sql.  " hotel_city='$hotel_city' AND count_of_travels='$count_of_travels' AND Room_Type_Name='$Room_Type_Name' && count_of_childerns='$count_of_childerns' AND price BETWEEN '$min' AND '$max' ORDER by hotels.hotel_name,room_type.Room_Type_Name"; 
             }
         }

    }
    else if($hotel_city!=="" && $count_of_travels !=="" && $Room_Type_Name!=="" ) {
         if($min=="" && $max=="")
         {
             $sql =  $sql.  " hotel_city='$hotel_city' AND count_of_travels='$count_of_travels' AND Room_Type_Name='$Room_Type_Name'  ORDER by hotels.hotel_name,room_type.Room_Type_Name";

         }
         else
         {
             if($min!=="" && $max=="")
             {
                  $split_min=explode("+",$min);
                  $sql =  $sql.  " hotel_city='$hotel_city' AND count_of_travels='$count_of_travels' AND Room_Type_Name='$Room_Type_Name'  AND price >= '$split_min[0]' ORDER by hotels.hotel_name,room_type.Room_Type_Name";
             }
             else
             {
                $sql =  $sql.  " hotel_city='$hotel_city' AND count_of_travels='$count_of_travels' AND Room_Type_Name='$Room_Type_Name'  AND price BETWEEN '$min' AND '$max' ORDER by hotels.hotel_name,room_type.Room_Type_Name"; 
             }
         }

    }
     else if($hotel_city!=="" && $count_of_travels !==""  ) {
         if($min=="" && $max=="")
         {
             $sql =  $sql.  " hotel_city='$hotel_city' AND count_of_travels='$count_of_travels'   ORDER by hotels.hotel_name,room_type.Room_Type_Name";

         }
         else
         {
             if($min!=="" && $max=="")
             {
                  $split_min=explode("+",$min);
                  $sql =  $sql.  " hotel_city='$hotel_city' AND count_of_travels='$count_of_travels'  AND price >= '$split_min[0]' ORDER by hotels.hotel_name,room_type.Room_Type_Name";
             }
             else
             {
                $sql =  $sql.  " hotel_city='$hotel_city' AND count_of_travels='$count_of_travels'   AND price BETWEEN '$min' AND '$max' ORDER by hotels.hotel_name,room_type.Room_Type_Name"; 
             }
         }

    }
     else if($hotel_city!=="" ) {


         if($min=="" && $max=="")
         {
             $sql =  $sql.  " hotel_city='$hotel_city'    ORDER by hotels.hotel_name,room_type.Room_Type_Name";

         }
         else
         {
             if($min!=="" && $max=="")
             {
                  $split_min=explode("+",$min);
                  $sql =  $sql.  " hotel_city='$hotel_city'  AND price >= '$split_min[0]' ORDER by hotels.hotel_name,room_type.Room_Type_Name";
             }
             else
             {
                $sql =  $sql.  " hotel_city='$hotel_city'    AND price BETWEEN '$min' AND '$max' ORDER by hotels.hotel_name,room_type.Room_Type_Name"; 
             }
         }

    }
         else if($count_of_travels!=="" ) {


         if($min=="" && $max=="")
         {
             $sql =  $sql.  " count_of_travels='$count_of_travels'    ORDER by hotels.hotel_name,room_type.Room_Type_Name";

         }
         else
         {
             if($min!=="" && $max=="")
             {
                  $split_min=explode("+",$min);
                  $sql =  $sql.  " count_of_travels='$count_of_travels'  AND price >= '$split_min[0]' ORDER by hotels.hotel_name,room_type.Room_Type_Name";
             }
             else
             {
                $sql =  $sql.  " count_of_travels='$count_of_travels'    AND price BETWEEN '$min' AND '$max' ORDER by hotels.hotel_name,room_type.Room_Type_Name"; 
             }
         }

    }
    else if($Room_Type_Name!=="" ) {
         if($min=="" && $max=="")
         {
             $sql =  $sql.  " Room_Type_Name='$Room_Type_Name'    ORDER by hotels.hotel_name,room_type.Room_Type_Name";
         }
         else
         {
             if($min!=="" && $max=="")
             {
                  $split_min=explode("+",$min);
                  $sql =  $sql.  " Room_Type_Name='$Room_Type_Name'  AND price >= '$split_min[0]' ORDER by hotels.hotel_name,room_type.Room_Type_Name";
             }
             else
             {
                $sql =  $sql.  " Room_Type_Name='$Room_Type_Name'    AND price BETWEEN '$min' AND '$max' ORDER by hotels.hotel_name,room_type.Room_Type_Name"; 
             }
         }

    }
     else if($count_of_childerns!=="" ) {
         if($min=="" && $max=="")
         {
             $sql =  $sql.  " count_of_childerns='$count_of_childerns'    ORDER by hotels.hotel_name,room_type.Room_Type_Name";
         }
         else
         {
             if($min!=="" && $max=="")
             {
                  $split_min=explode("+",$min);
                  $sql =  $sql.  " count_of_childerns='$count_of_childerns'  AND price >= '$split_min[0]' ORDER by hotels.hotel_name,room_type.Room_Type_Name";
             }
             else
             {
                $sql =  $sql.  " count_of_childerns='$count_of_childerns'    AND price BETWEEN '$min' AND '$max' ORDER by hotels.hotel_name,room_type.Room_Type_Name"; 
             }
         }

    }
     else if($min!=="" &&  $max!=="" ) {
             if($min!=="" && $max=="")
             {
                  $split_min=explode("+",$min);
                  $sql =  $sql.  " price >= '$split_min[0]' ORDER by hotels.hotel_name,room_type.Room_Type_Name";
             }
             else
             {
                $sql =  $sql.  " price BETWEEN '$min' AND '$max' ORDER by hotels.hotel_name,room_type.Room_Type_Name"; 
             }
    }
    else
    {
         $sql = "SELECT room.room_id,room.short_description,room.count_of_travels,room.count_of_childerns,room.price,hotels.hotel_id,hotels.hotel_name,hotels.hotel_city,hotels.hotel_picture,room_type.Room_Type_Id,room_type.Room_Type_Name FROM hotels INNER JOIN room ON room.Hotel_Id=hotels.hotel_id INNER JOIN room_type on room.room_type=room_type.Room_Type_Id";

    }
  //  echo $sql;
  //exit;

        $result = $connection->query($sql);

    if ($result->num_rows > 0) {

        // output data of each row
        while($row = $result->fetch_assoc()) {
           ?>





   <article class="one-third">

<figure><a href="hotel.php?id=<?php echo $row["room_id"]; echo ';' ; echo $row["hotel_id"]; echo";";  echo $row["Room_Type_Id"]; ?>" title=""><img src="admin/images/Hotels/<?php echo $row['hotel_picture']; ?>" alt="<?php echo $row['hotel_name']; ?>" /></a></figure>
<div class="details">
<h3><?php echo $row['hotel_name']; ?>
<span class="stars">
<i class="material-icons">&#xE838;</i>
<i class="material-icons">&#xE838;</i>
<i class="material-icons">&#xE838;</i>
<i class="material-icons">&#xE838;</i>
<i class="material-icons">&#xE838;</i>
</span>
 </h3>
<span class="address">Type•<?php echo $row['Room_Type_Name'] ?></span>
<span class="address">Adults Allowed:<?php echo $row['count_of_travels'] ?></span>
<span class="address">Children Allowed:<?php echo $row['count_of_childerns'] ?></span>
 <span class="address">City: <?php echo $row['hotel_city'] ?>  •  <a href="map.php">Show on map</a></span>
<span class="rating"> 8 /10</span>
<span class="price">Price per room per night from  <em>Rs:<?php echo $row['price']; ?></em> </span>
<div class="description">
 <p><?php echo $row['short_description']; ?> </p>
</div>

<a href="hotel.php?id=<?php echo $row["room_id"]; echo ';' ; echo $row["hotel_id"]; echo";";  echo $row["Room_Type_Id"]; ?>" class="gradient-button">Book Now</a>
</div>
</article>

я знаю, что мое объяснение очень длинное, но важно написать всю мою логику здесьчто может помочь вам понять.

Проблема в том, какой запрос я должен использовать, чтобы проверить наличие номеров, используя дату заезда и дату оформления и где этот запрос будет использоваться?У меня есть идея, что запрос содержит соединения с таблицей бронирования, но я не знаю, как использовать.Пожалуйста, помогите

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...