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

상품 한번만 구매가능하게 하기 채택완료

hazkiryo 7년 전 조회 1,548

</p>

<p>// 한번만 구매가능하도록

$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);</p>

<p>if (!$chk['it_id']) {

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

}</p>

<p>

 

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

/shop/orderformupdate.php

 

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

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

답변 2개

채택된 답변
+20 포인트
플래토
7년 전

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

 

누락된게 있습니다.

 

ct_status 정보입니다.

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

 

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

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

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

조금만 더 생각해보면

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

결국

 

ct_stauts != '취소'

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

 

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

 

</p>

<p>// 한번만 구매가능하도록</p>

<p>$sql = " select it_id from {$g5['g5_shop_cart_table']}</p>

<p>          where mb_id = '{$member['mb_id']}'</p>

<p>                   and it_id = '$it_id'</p>

<p>                   and ct_stauts != '취소'</p>

<p>";</p>

<p>$row = sql_fetch($sql);</p>

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

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

<p>}</p>

<p>

와 같이 될수있습니다만

 

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

여러군데서 체크해야 하면 

 

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

 

 

 

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

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

그누위즈

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

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

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

$row = sql_fetch($sql);

부분을

$chk = sql_fetch($sql);

이렇게 바꾸세요

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

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

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

로그인