예약 시스템에서 중복시간 체크

예약 시스템에서 중복시간 체크

QA

예약 시스템에서 중복시간 체크

답변 2

본문

체육장 코트를 예약하는 시스템을 만들고 있는데

스토리 보드를 그려보자면 장소 선택 -> 시설(코트) 선택 -> 시간대선택 -> 사용료자동입력

 

이런식으로 작동하는 기능입니다 현재 Ajax로 장소를 선택하면 시설이 업로드되고,

989955844_1660023490.6806.png

시설(코트)을 선택하면 시간대가 불러와지도록(for문으로 작성하였습니다) 하였고,

989955844_1660023504.2048.png

시간대를 선택하면 사용료가 자동으로 입력되는 과정까지는 완료하였습니다.

989955844_1660023546.1043.png

 

아래는 해당 페이지의 Ajax로 보내는 곳 코드입니다!!

989955844_1660023756.321.png

 

원하는 내용은 시간대 옆에 누군가 같은 날 같은 시간에 예약을 한다고하면 예약이 안되도록

셀렉트 옵션에 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>";
}

for($i=6;$i <= 22;$i++){
$time = $i.":00~".($i+1).":00";
$check_reserv = "select count(*) from g5_write_04 where wr_1 = 'wr_1' and wr_3 = 'wr_3' and wr_4 = 'wr_4' and wr_7  = '$time'";

if($check_reserv){
$text = "(예약불가)";
}else{
$text = "";
}

echo "<option>".$time.$text."</option>";
}



주신 코드 보면서 조금 간편하게 변경해보았는데요 저렇게 바꾸고 돌리면 check_reserv에서 한번이라도 1이 나오면 모든 항목에 전부 예약불가가 붙어서 나오더라구요...

for($i=6;$i <= 22;$i++){

$time = $i.":00~".($i+1).":00";
$check_reserv = sql_Fetch("select count(*) as cnt from g5_write_04 where wr_1 = 'wr_1' and wr_3 = 'wr_3' and wr_4 = 'wr_4' and wr_7  = '$time'");
$text = "";

if($check_reserv > 0){
$text = "(예약불가)";
}else{
$text = "";
}

echo "<option value='".$time."' >".$time.$text."</option>";
}

여전히 전부 다 붙어서 나오네욥.. 심지어 다른 코트를 선택해도 붙어서 나오네요ㅠㅠ

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 27
© SIRSOFT
현재 페이지 제일 처음으로