2011-12-10 2 views
0

호텔 예약 사이트를 구현하여 호텔 소유자가 객실 상황에 따라 객실을 예약 할 수 있습니다. 내 데이터베이스 2 실에서와 MySQL 사이에서 작동하지 않습니다

$q=" SELECT * 
     FROM tbl_roombook 
     WHERE 
     hotel_id='$h_id'AND 
     start_date 
     BETWEEN '$date1' 
     AND '$date2' 
     AND end_date 
     BETWEEN '$date1' 
     AND '$date2' 

    "; 
$res = $this->db->returnArrayOfObject($q); 
//var_dump($res); 

2011-12-25부터 2011-12-31까지 예약 : 가능한 객실의 수를 확인하기 위해, 내가 좋아하는 코드를 작성했습니다. 그리고 내 echo $date12011-12-29이고 $echo date22011-12-30입니다. 그러나 $q 빈 결과를 반환합니다! 왜 ?

+1

에서 사용할 수 있을까? – deceze

+0

그들은 현재 날짜 형식입니다 – Boruah

+0

어떤 SQL 오류가 있습니까? 쿼리가 MySQL 클라이언트 또는 phpMyAdmin에서 작동합니까? – miq

답변

0

예를 들어 결과가 반환되지 않아야합니다 ... start_date = 2011-12-25 2011-12-29와 2011-12-25 사이에 표시되지 않으므로이 표현은 바로 잘못된 것입니다. 내가 원하는 것은 예약 된 범위와 새로운 가능한 예약 범위 사이에 중복이 있는지 확인하는 것입니다.

는 대신에 $의 날짜 1에 $ DATE2 전에 항상 가정

start_date > '$date2' OR end_date < '$date1; 

확인하기를 원할 것입니다이 작업을 수행합니다.

0

이 예에서는 제공 한 date1date2 항목에 대한 결과가 반환되지 않습니다. 이는 start_date = 2011-12-25end_date = 2011-12-31으로 가정하기 때문입니다.
두 값 모두 제공된 기간 (2011-12-29 and 2011-12-30) 내에 없습니다.
따라서 결과가 생성되지 않습니다. 당신은 start_date`과`end_date``의 열 유형은 무엇입니까 역으로

'$date1' BETWEEN start_date AND end_date 
OR '$date2' BETWEEN start_date AND end_date 
관련 문제