Php 在mysql中插入类似的值,但使用单个查询多次更改日期列
我正在为多家酒店开发一个预订系统,每个酒店都有多个房间类型,我想创建一个可用性日历。我的想法是,如果我可以重复插入预订详细信息名称、入住日期、退房日期、酒店名称……等等,比如说,我的入住日期是2014-12-28,退房日期是2015-01-07,我重复插入除签入日期之外的所有其他列的值,签入日期应增加到签出日期之前的日期,然后我可以使用行计数和每天每种房间类型的减法得出可用的房间 我被数据库卡住了…php代码…我似乎无法获取日期类型的html输入值作为我的开始日期 如果有人知道实现我的可用日历的更简单方法,请与我分享Php 在mysql中插入类似的值,但使用单个查询多次更改日期列,php,mysql,Php,Mysql,我正在为多家酒店开发一个预订系统,每个酒店都有多个房间类型,我想创建一个可用性日历。我的想法是,如果我可以重复插入预订详细信息名称、入住日期、退房日期、酒店名称……等等,比如说,我的入住日期是2014-12-28,退房日期是2015-01-07,我重复插入除签入日期之外的所有其他列的值,签入日期应增加到签出日期之前的日期,然后我可以使用行计数和每天每种房间类型的减法得出可用的房间 我被数据库卡住了…php代码…我似乎无法获取日期类型的html输入值作为我的开始日期 如果有人知道实现我的可用日历的
谢谢你,节日快乐。我建议你这样做: 1在HTML输入中,要求用户在YYYY-MM-DD/中输入日期,我认为您也在这样做 2在通过日期输入和日期输出提交循环时,检查可用性和显示
$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;
请提供您的代码示例,以便于其他人帮助您。您的意思是什么?我可以使用行计数和每天每种房间类型的减法来获得可用的房间。??你想向用户展示每天不同酒店、房间类型的可用性吗??或者其他的??Adarsh Rajput是的,我想向用户展示不同酒店的可用性,以及相应的房间类型,为期约14天。@JeffersonSankara ok。。我来回答。但为什么要存储在数据库中呢。如果用户在看到可用性后关闭了窗口?最好从date\u in循环到date\u out,检查可用性并为每天生成HTML。并在此处添加表的列名,从中检查可用性,以更好地帮助您。
//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";
"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.