테스트 사이트 - 개발 중인 베타 버전입니다

예약 시스템에서 중복시간 체크 채택완료

Zi이가람Zone 3년 전 조회 2,244

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

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

 

이런식으로 작동하는 기능입니다 현재 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개

채택된 답변
+20 포인트
포이치
3년 전

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>";
}

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

Z
Zi이가람Zone
3년 전
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이 나오면 모든 항목에 전부 예약불가가 붙어서 나오더라구요...
내가누구야
3년 전
for 안에서 동작이라 선 리셋 후 작동으로 하시면 될겁니다.

for ........ {
$text = '';
if($check_reserv)
$text = '(예약불가)';
Z
Zi이가람Zone
3년 전
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>";
}

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

댓글을 작성하려면 로그인이 필요합니다.

포이치
3년 전

$check_reserv['cnt'] 를 비교문으로 쓰시고

쿼리결과값이 정상인지 print_r 때려보시고 맞춰보세요.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인