酒店订房系统:如何使用mysql来确定一个时间段内的房间都是可订的
需要解决的问题:
假设一个用户选择了日期范围来进行订房,例如:2014-04-25至2014-04-30 ,那么现在问题就出现,你必须要确认在这个时间段内某个房间是否都是有房间的,如果没有那么当然不能订。
我的解决思路是:
1.获取到用户的check_in_date&check_out_date,然后计算出需要住宿多少天;
2.查询在这个时间段内,对应某个酒店所有的所有房间类型,并且房间数大于0,以房间id(room_id)分组的记录数各是多少,并获取room_id(具体MYSQL语句:"SELECT count(*) as have_days,room_id FROM zroom_day_price WHERE today>=? AND today<? AND room_id IN (".$room_ids.") AND rooms>0 GROUP BY room_id");
3.使用php程式来比较1(住宿天数)&2(对应时间段中某个房间id的记录数)是否相等。相等,则将该房间的id保存到一个预先定义好的数组中,最后在循环结束后,将该数组返回,并根据该房间id数组取出对应的房间detail information。
每天房间价格表(zroom_day_price)结构(structure)
room_day_price_id | room_id | unit | price | rooms | bookedrooms | today | adminid | createdate |
int(11) primary key auto_increment | int(11) | varchar(20) | varchar(20) | int(11) default 0 | int(11) default 0 | varchar(20) | int(11) | varchar(20) |
ps截图:
<?php function filter_rooms($check_in,$check_out,$room_ids){
$departure_days = (strtotime($check_out) - strtotime($check_in))/(24*3600);
$sql = "SELECT count(*) as have_days,room_id FROM zroom_day_price WHERE today>=? AND today<? AND room_id IN (".$room_ids.") AND rooms>0 GROUP BY room_id";
//SELECT COUNT( * ) FROM zroom_day_price WHERE today >= '2014-04-27' AND today <= '2014-04-30' AND room_id IN ( 266, 267, 268, 269, 270 ) AND rooms >0 GROUP BY room_id
$room_ids_period = array();
$data = array($check_in,$check_out);
$count = SQL_select($sql,$data);
$length = count($count);
foreach($count as $value){
if($value['have_days'] == $departure_days){
$room_ids_period[] = $value['room_id'];
}
}
if($room_ids_period){
return implode(',',$room_ids_period);
}else{return '';}
} ?>
房间资料表(zroom)
room_id | title_chs | title_cht | title_eng | stype | hotel_id | pri | createdate | lastdate | summary_chs | smummary_cht | summary_eng | price | extrabed | condition_chs | condition_cht | condition_eng | maxrooms | logourl | corperate |
int(10)UNSIGNEDPRIMARYKEYAUTO_INCREMENT | varcahr(50) | varchar(50) | varchar(50) | smallint(5) | int(10) | smallint(5) | varchar(20) | varchar(20) | medium text | medium text | mediun text | varchar(45) | int(11) | varchar(1000) | varchar(1000) | varchar(1000) | int(10) | varchar(200) | tinyint(1) |
ps: zroom structure
酒店订房系统:如何使用mysql来确定一个时间段内的房间都是可订的的更多相关文章
- MSSQL 判断一个时间段是否在另一个时间段内!
MSSQL 判断一个时间段是否在另一个时间段内! 1 CREATE TABLE #B ( MeetingRoom int, BeginTime datetime, EndTime datetime ) ...
- js 日期比较大小,js判断日期是否在区间内,js判断时间段是否在另外一个时间段内
/** * 日期解析,字符串转日期 * @param dateString 可以为2017-02-16,2017/02/16,2017.02.16 * @returns {Date} 返回对应的日期对 ...
- js 判断当前时间是否处于某个一个时间段内
js 判断当前时间(或者所选时间)是否在某一时间段 我们可以使用 jutils - JavaScript常用函数库的 isDuringDate 函数来实现 传入 beginDateStr (开始时间) ...
- MYSQL 判断一个时间段是否在另一个时间段内。
[1 CREATE TABLE #B 2 ( 3 MeetingRoom int, 4 BeginTime datetime, 5 EndTime datetime6 ) 7 insert into ...
- 利用Chrome的Heap Snapshot功能分析一个时间段内的内存占用率
在下图测试代码第13行和第16行设断点. 以调试方式运行,首先断点在第13行处触发: 打开Chrome开发者工具,点击Profiles tab, 再点击按钮"Take Snapshot&qu ...
- java获取一个时间段内的时间天数
package com.hzcominfo.hik.hikbigscreen.core; import java.text.SimpleDateFormat; import java.util.Arr ...
- Java判断一个时间是否在另一个时间段内
需求:当时间在凌晨0点至0点5分之间程序不执行. 也就是实现判断当前时间点是否在00:00:00至00:05:00之间 方法: Java代码 : /** * 判断时间是否在时间段内 * * @para ...
- sql如何获取一个时间段内的月份
),) from master..spt_values where type='P' and dateadd(month,number,'2010-01-01')<='2010-09-01' / ...
- 查询在某一个时间段内的sql(oracel)
( to_char(t.TUIJIAN_TIME, 'yyyy-MM-dd') between #{begin_time} and #{end_time} )
随机推荐
- python中库学习
一.numpy NumPy的主要对象是同种元素的多维数组.这是一个所有的元素都是一种类型.通过一个正整数元组索引的元素表格(通常是元素是数字).在NumPy中维度(dimensions)叫做轴(axe ...
- fieldOfView
fieldOfView 属性 fieldOfView:Number 语言版本: ActionScript 3.0 运行时版本: Flash Player 10, AIR 1.5 为三维视野指定一个 ...
- ES5之defineProperty
一 概述 Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象. 对象里目前存在的属性描述符有两种主要形式:数据描述符和存 ...
- SpringMVC入门(基于注解方式实现)
---------------------siwuxie095 SpringMVC 入门(基于注解方式实现) SpringMVC ...
- pyhon之函数参数
#函数的参数分为形参和实参,其中形参就是形式参数,是在创建函数的时候定义,实参就是实际参数,是在调用的函数的时候创建,这个并不是重点,具体#的参数内部,我们可以把参数分为以下4种# 1.普通参数# 2 ...
- 把System.Drawing.Image对象img,在页面的Image控件上显示出来
1.保存到本地,然后调用. //定义文件名 string iname = DateTime.Now.ToString("yyMMddhhmmss"); //保存到服务器,b是 ...
- Spring框架的事务管理之基于AspectJ的XML方式(重点掌握)
1. 步骤一:恢复转账开发环境(转账开发环境见“https://www.cnblogs.com/wyhluckdog/p/10137283.html”) 2.步骤二:引入AOP的开发包3.步骤三:引入 ...
- Python发送邮件不需要发件人密码认证
#!/usr/bin/python # coding: UTF-8 import smtplib from email.mime.text import MIMEText receivers_list ...
- Golang之Mysql操作
话说当年武大郎对着电脑一顿噼里啪啦,,,对mysql增删改查 增加insert package main import ( "fmt" "github.com/jmoir ...
- instanceof用法及本质:
import static java.lang.System.*; public class InstanceofTest{ public static void main(String[] args ...