채택완료

상품 한번만 구매가능하게 하기

2018-08-31 (금) 11:00:47 1,741
Copy
// 한번만 구매가능하도록
$sql = " select it_id from {$g5['g5_shop_cart_table']}
          where mb_id = '{$member['mb_id']}' and it_id = '$it_id' ";
$row = sql_fetch($sql);

if (!$chk['it_id']) {
    alert('이미 구매한 상품입니다.');
}

영카트5 사용중입니다. 상품을 한번만 구매하게 하고싶습니다.

/shop/orderformupdate.php

제 생각대로 작성해봤는데 안되네요..

|

답변 2개

채택된 답변
+20 포인트

영카트의 카트테이블에 구매에 관련된 내용이 들어가는게 맞습니다만

누락된게 있습니다.

ct_status 정보입니다.

여기에는 (주문,입금,준비,배송,완료,취소 ..)등의 값들이 들어갑니다.

주문을 1회만 한다는 조건은

주문을 할때부터 배송완료까지를 고려해야 하므로

ct_status in ('주문','입금','배송','취소','완료') 를 쿼리에 추가할수도 있지만

조금만 더 생각해보면

'취소'가 아니면 진행이 안되면 됩니다.

결국

ct_stauts != '취소'

로 간단하게 조건추가를 할수있겠죠

위의 내용을 문의하신 사항에 추가하면

Copy
// 한번만 구매가능하도록

$sql = " select it_id from {$g5['g5_shop_cart_table']}

          where mb_id = '{$member['mb_id']}'

                   and it_id = '$it_id'

                   and ct_stauts != '취소'

";

$row = sql_fetch($sql);

if (!$row['it_id']) {     // 위에 그누위즈님이 이미 언급하셨네요

    alert('이미 구매한 상품입니다.');

}

와 같이 될수있습니다만

이 로직이 한군데서만 체크하면 된다면 그냥 두어도 되고

여러군데서 체크해야 하면 

함수로 만들어서 공통 라이브러리에 넣어야겠죠

소스코드가 말이안됩니다.

쿼리 결과를 $row 변수에 담아놓고

아래에서는 전혀 연관없는 $chk 변수에 if문을 사용하셨어요

$row = sql_fetch($sql);

부분을

$chk = sql_fetch($sql);

이렇게 바꾸세요

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