예약 시스템에서 중복시간 체크
본문
체육장 코트를 예약하는 시스템을 만들고 있는데
스토리 보드를 그려보자면 장소 선택 -> 시설(코트) 선택 -> 시간대선택 -> 사용료자동입력
이런식으로 작동하는 기능입니다 현재 Ajax로 장소를 선택하면 시설이 업로드되고,
시설(코트)을 선택하면 시간대가 불러와지도록(for문으로 작성하였습니다) 하였고,
시간대를 선택하면 사용료가 자동으로 입력되는 과정까지는 완료하였습니다.
아래는 해당 페이지의 Ajax로 보내는 곳 코드입니다!!
원하는 내용은 시간대 옆에 누군가 같은 날 같은 시간에 예약을 한다고하면 예약이 안되도록
셀렉트 옵션에 11:00~12:00 (예약불가) 이런식으로 노출시키고 싶은데 어떻게 체크하면 좋을까요?
Ajax에서 검사하는 항목이 이용하는 날짜, 장소, 시설을 파라미터로 쓰면 List형식으로 여러개를 받게되어서
결과 값이 제대로 나오지가 않습니다. 정확히는 해당 날짜의 해당 장소와 코트 값이 여러개이면 데이터가 2개 이상 불러와져서 오류가 납니다. 제가 Array형식에서 뽑아오는 것을 써본적이 없어서 어려운 것 같네요... 아래는 해당 페이지에서 Ajax로 값을 넘겨받는 곳의 문서입니다.
<?php
include_once('./_common.php');
$wr_1 = $_POST['wr_1'];
$wr_3 = $_POST['wr_3'];
$wr_4 = $_POST['wr_4'];
$sql2 = "SELECT * FROM g5_write_04 WHERE wr_1 = '$wr_1' AND wr_3 = '$wr_3' AND wr_4 = '$wr_4'";
$result2 = sql_query($sql);
$row2 = sql_fetch_array($result);
for($i=6;$i <= 22;$i++){
echo "<option value='";
echo $i;
echo ":00~";
echo $i+1;
echo ":00'>";
echo $i;
echo ":00~";
echo $i+1;
echo ":00</option>";
}
?>
답변 2
for 문 아래에 해당 시간대에 예약이 있는지를 체크하는 쿼리를 넣어서 결과를 받으시고
결과에따라 for 문의 option value 의 disabled 활성화와 시간옆에 (예약불가) 라는 텍스트를 넣어주면
될듯합니다.
for($i=6;$i <= 22;$i++){
$chk_time = $i.':00~'.($i+1); // 06:00~07:00
//테이블명,조회쿼리 임의작성하였으니 본인에 맞게 수정
$reserv_check = sql_Fetch("select count(*) as cnt from test_reserv_db where reserv_time='{$chk_time}' ");
if($reserv_check['cnt']) {
$disabled = "disabled";
$append_txt = "(예약불가)";
} else {
@unset($disabled,$append_txt);
}
echo "<option value='";
echo $i;
echo ":00~";
echo $i+1;
echo ":00' {$disabled}>";
echo $i;
echo ":00~";
echo ($i+1).$append_txt;
echo ":00</option>";
}
$check_reserv['cnt'] 를 비교문으로 쓰시고
쿼리결과값이 정상인지 print_r 때려보시고 맞춰보세요.