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

예약게시판 중복글 수정방법 질문드려요! 채택완료

https://sir.kr/g5_skin/26396 위 스킨을 사용중인데 시간별마다 2명씩만 예약이 가능하도록 설정했으나

마감되기전 여러 사람들이 창을 띄어놓고 시간대를 클릭한상태에서 글쓰기를 누르면

중복으로 예약접수가 되게 됩니다.

 

예를들면 오전10시가 예약이 가능한데 여러사람들이 라디오박스가 비활성화되기전에

오전10시가 활성화된 상태로 체크하여 글쓰기를 완료 누르면 여러사람들이 다 접수가 되버리게 됩니다...

 

수정할 방법 없을까요? ㅠㅠ

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

답변 3개

채택된 답변
+20 포인트

처음 시간대 조회 뿐만아니라

db insert 할때 한번더 예약내역 검사하고 insert 시켜야될듯

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

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

자문자답합니다.

 

 </p>

<pre highlighter="hljs">
<code>if ($w == "") {
    // 작성되는 게시물의 선택된 날짜와 시간
    $selected_date = $_POST['wr_1'];
    $selected_time = $_POST['wr_2'];

    // 해당 날짜 및 시간에 대한 예약 갯수 조회
    $sql = "SELECT COUNT(*) AS cnt FROM {$write_table} WHERE wr_1 = '".$selected_date."' AND wr_2 = '".$selected_time."'";
    $row = sql_fetch($sql);

    if ($row['cnt'] >= 2) { // 해당 날짜 및 시간에 대한 예약 갯수가 2 이상인 경우
        alert('신청이 불가능합니다. 선택한 날짜와 시간에 대한 예약 수량을 초과하였습니다.');
        exit;
    }
}</code></pre>

<p>

 

write_update파일에 해당 코드 추가하니 중복막네요 

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

답변에 대한 댓글 2개

if ($row['cnt'] > 2)
등호를 빼셔야...
더 정확하게 하려면 트랜잭션으로 처리해야 합니다.
그리고 선착순"이라고 하면
3등부터는 접수가 되어도 신청이 안 된 것으로 처리하면 되지 않을까요?

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

db 저장하는 부분에서

1. 트랜젹션 처리를 추가하신후에

2. 인원 체크 로직을 추가하시고

3. 인원이 넘었을 경우는 롤백 처리를 하시고 정상인 경우는 커밋 처리를 하시면 됩니다.

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

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

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

로그인

전체 질문 목록