INSERTING mysql中的类似值,但使用单个查询多次更改日期列

时间:2014-12-28 10:50:27

标签: php mysql

我正在为超过一家酒店的预订系统工作,每个酒店都有多种房型,我想创建一个可用性日历。我的想法是,如果我可以重复插入预订详细信息(姓名,check_in_date,check_out_date,hotel_name .... bla bla),可以预订房间的天数说,我的入住日期是2014-12-28并检查out date是2015-01-07,我插入重复除check_in_date之外的所有其他列的值,这些列应该增加到退房日期之前的日期,然后我可以使用每个房间类型的行数和每天减去到达房间可用。

我被困在数据库...和PHP代码......我似乎无法获得日期类型的html输入的值作为我的开始日期

如果有人知道更简单的方式来实现我的可用性日历,请与我分享。

谢谢,节日快乐。

1 个答案:

答案 0 :(得分:0)

我建议这样做:

1)在HTML input中要求用户在YYYY-MM-DD中输入日期//我认为你在做同样的事情

2)在通过date_indate_out提交循环时,请检查可用性并显示。

$availability="";
if( $date_in=date_create($_POST["check_in_date"]) && 
  $date_out=date_create($_POST["check_out_date"]) )
  {
    $interval = date_diff($date_in, $date_out)->format('%R%a')+1;
    for($j=0;$j<$interval;$j++){
         $date=date_add($date, date_interval_create_from_date_string('1 days'));
         $availability.="ON ".$date->format("Y-m-d").": ";

         //check in database and append to $availability as available...
         // ....in Hotel XXX,YYY room type AAA,BBB [as you want to display]
    }
 }
 else $availability="Enter dates correctly";

echo $availability;

3)如果用户确认&amp;然后付款,然后在预订确认信息中存储在数据库中。

//code to store in database
// assuming table BOOKING (date,room_type,hotel_id)
//mentioning only required column, you may have more

$bookingDone=false;
if($confirmPayment && $date_in=date_create($_POST["check_in_date"]) && 
  $date_out=date_create($_POST["check_out_date"]) )
  {
    $interval = date_diff($date_in, $date_out)->format('%R%a')+1;

    mysqli_start_transaction($dbConnection);
    $bookingDone=true;
    for($j=0;$j<$interval;$j++){
         $date=date_add($date, date_interval_create_from_date_string('1 days'));

         //insert in database, $j is dayNo. Ex. in your case 28th will be first day...

         // $sql="INSERT INTO booking VALUES ('".$date->format("Y-m-d")."','".$selected_room_type_for_day[$j]."','".$selected_hotel_for_day[$j]."');

         if(!inserted) $bookingDone=false;
    }
    if($bookingDone) mysqli_commit($dbConnection);
    else mysqli_rollback($dbConnection);
 }
 else echo "An error occured";

查询以检查可用性将在步骤2)中使用

 "SELECT count(1) as filled_room, hotel_id, room_type FROM booking WHERE date='".$date->format("Y-m-d")."' GROUP BY hotel_id,room_type;"

 "SELECT rooms_available-".$filled_room." FROM hotel_info WHERE hotel_id=".$hotel_id." AND room_type='".$room_type."';"

  //variable used in second query comes from first one & second will return available rooms
  // hotel_info table contains information about each hotels and no of rooms af perticuler type, value of `rooms_available` contains no of rooms in particular hotel.