2012-10-14 3 views
3

고객이 하루에 몇 시간 동안 예약 할 수있는 스튜디오 예약 코드를 작성 중입니다. 예를 들어 고객이 입력하는 경우 날짜 : 2011 년 10 월 17 일 시간 : 10:30:00 am 시간 초과 : 11:30:00 amPHP 코드에서 사용할 데이터베이스 레코드 가져 오기

그런 경우 다른 고객이 동일한 날짜의 오전 10:30 - 11:30 사이에/timeout에 시간을 입력 할 수 없어야합니다 . 하루 아직

<?php 
$resttimefrom='10:00:00 am'; 
$resttimeto='11:00:00 am'; 
$reserve='11:01:00 pm'; 
$datedat='2012-10-14'; 


$st_time = strtotime($resttimefrom); 
$end_time = strtotime($resttimeto); 
$reserve = strtotime($reserve); 
$datedat = strtotime($datedat); 

print $st_time; echo "<br>"; 
print $end_time; echo "<br>"; 
print $reserve; echo "<br>"; 

if ($reserve => $st_time and $reserve =< $end_time) 
{ 
echo "sorry, not available"; 
} 
else 
{ 
echo "ok!"; 
} 

?> 

이미 시간을 제한 할 수 있지만 :

데이터베이스를하기 전에, 나는이 코드를 시도했습니다.

그것은 단지 샘플이므로 데이터베이스로 전송하면 어떻게해야하는지 알 수 있습니다.

내 문제는 이것이다 :

I, 3 열 ... 오드리, 제한 시간 예약라는 이름의 테이블이 세 개의 레코드가 입력 된 dateres이

2011년 10월 15일, 10 : 30 11:30 2011 년 10 월 15 일, 1 : 00-2 : 30 2011 년 10 월 15 일 5 : 30-8 : 30

위의 코드에서 위의 레코드를 검색하려면 어떻게해야합니까?

$resttimefrom='10:00:00 am'; 
    $resttimeto='11:00:00 am'; 
    $reserve='11:01:00 pm'; 
    $datedat='2012-10-14'; 

데이터베이스의 모든 레코드를 10:00:00으로 변경하려면 어떻게해야합니까?

나는.와 MySQL ... :(누군가가 나를 도와주세요 PHP에 대한 매우 제한된 지식을 제발 제발 제발이

+1

이 날짜/시간 값을 mysql의 원래 날짜, 시간 또는 날짜/시간 필드 유형으로 저장하기를 바랍니다. 그렇지 않은 경우 즉시 해당 유형으로 전환해야합니다. 그렇지 않으면 네이티브 날짜/시간이 아닌 날짜/시간의 "문자열"을 처리하려는 고통의 세계에 빠지게됩니다. –

+0

당신은 본래의 날짜/시간으로 무엇을합니까? 그 형식인가요? YYYY-MM-DD – Harriet

+0

http://dev.mysql.com/doc/refman/5.1/en/datetime.html – ultranaut

답변

0

난 당신이 예약 기간 다루는 방법을 재고 제안

. 오히려 date_reserved을하는 것보다 .. 단순히 time_in 있고, time_outdatetime로 내가 대신 12 시간의 (AM & PM 포함) 24시간 형식을 사용하는 것입니다 그래서 당신은 할 것이다 :

$timeInStr = '2012-10-14 10:00:00'; 
$timeOutStr = '2012-10-14 11:00:00'; 

그냥 완전성을 위해, 여기에 데이터를 삽입하는 몇 가지 코드 테이블에 넣는다 :예약 요청이 이전에 설정 한 예약과 충돌 예약 요청 (당신의 $reserve 변수에 상응하는) 모든 예약의 time_in & time_out 사이에 있는지 데이터베이스를 조회 할 여부를 결정하기 위해

$pdo = new PDO(
     "mysql:dbname=stack_overflow;host=127.0.0.1", 
     $username, 
     $password); 

// prepare the insert statement 
$statement = $pdo->prepare(" 
     INSERT INTO `reserve`(`time_in`, `time_out`) 
     VALUES (:time_in, :time_out)"); 

// bind param values 
$statement->bindParam(':time_in', $timeInStr, PDO::PARAM_STR); 
$statement->bindParam(':time_out', $timeOutStr, PDO::PARAM_STR); 

$statement->execute(); 

.

이 경우, 이전 예약 수가 요청한 예약 시간과 겹칠 수를 계산합니다.

$statement = $pdo->prepare(" 
    SELECT COUNT(`id`) 
    FROM `reserve` 
    WHERE :reserve_request_time BETWEEN `time_in` 
    AND `time_out`"); 

$statement->bindParam(
     ':reserve_request_time', 
     '2012-10-14 10:30:00', 
     PDO::PARAM_STR); 

$statement->execute(); 
$result = $statement->fetch(); 

// if an overlapping reservation was found "sorry, not available" 
if (0 < (int) $result['COUNT(`id`)']) { 
    echo "sorry, not available"; 
} 
else { 
    echo "ok!"; 
} 
+0

괜찮습니다. 아픈 사람이 이걸 시도해 줘서 고마워. :) – Harriet