크롬80버전 결제 이슈, 영카트5 주요패치 확인!

후기중복 방지관련

그누보드5
영카트5
매뉴얼
Q & A
제작의뢰
컨텐츠몰
부가서비스
소모임
커뮤니티
후기중복 방지관련

QA

가정의 달 맞이 SIR 컨텐츠몰 10% 특별할인 - 코로나19 바이러스로 어려운 시기, SIR이 함께 하겠습니다.

후기중복 방지관련

본문

/shop/itemuseform.php 파일에

 

// 사용후기 작성 설정에 따른 체크

check_itemuse_write($it_id, $member['mb_id']);

 

이 쿼리 아래에 해당 코드를 심어놓았습니다...

// 후기 중복 방지 200120
$sql = " select od_id from {$g5['g5_shop_cart_table']}
            where it_id = '$it_id'
                and mb_id = '{$member['mb_id']}'
                and ct_status = '완료'
                order by od_id desc ";
$row = sql_fetch($sql);
$od_id = $row['od_id']; // 완료처리된 내역중 최근 주문번호를 가져옴 200120

$use_sql = " select count(*) as cnt
                    from {$g5['g5_shop_cart_table']} a join {$g5['g5_shop_item_use_table']} b
                    where b.od_id = '$od_id'
                      and a.it_id = '$it_id'
                      and a.mb_id = '{$member['mb_id']}'
                      and a.ct_status = '완료' ";
$use_row = sql_fetch($use_sql);
if ( $use_row['cnt'] > 0 ){
    alert_close("후기는 주문당 한번만 작성 가능힙니다.");
}

후기를 작성하면 후기 테이블에 od_id 가 db에 담기게 해놓아서 od_id 1개당 후기도 1개만 등록 가능하게 했는데

 

2개의 제품을 한번에 주문하고 완료하고 나서 후기 작성할때 이슈가 생기네요;;

 

a b 2개의 제품을 구매하고 완료처리시킨뒤

 

a 제품에 후기를 작성하고 b 제품에도 후기를 달려고 하면 "후기는 주문당 한번만 작성 가능합니다." 라고 심어놓은 alert창이 뜨는데요;;

 

$ure_sql 쿼리를 보면 od_id, it_id, mb_id, ct_status ... 4개를 대조해서 count 를 불러오는데

 

a 제품에는 후기가 달렸으니 echo $use_row['cnt']; 해보면 1이 뜹니다.

 

그런데 b 제품에서도 1이 뜨는 이유를 알 수 있나요...??

 

위 코드의 쿼리도 제가 쿼리를 짤 줄은 몰라서 다른데 join 쓴 구문 가져와서 이곳에 물어가며 작성한건데요...

 

제 생각이 맞다면... b 제품에서는 후기테이블에 od_id, mb_id, ct_status는 같을지언정 등록된 it_id 값이 없으니... echo $use_row['cnt']; 를 했을 때는 0이 떠야 하는게 아닌가 싶은데...

 

어느 부분이 잘못된건지를 모르겠습니다..ㅠㅠㅠ;;

 

조언 주시면 감사하겠습니다ㅠㅠㅠ

이 글을 내 페이스북 계정으로 보내기 이 글을 내 트위터 계정으로 보내기

이 질문에 댓글 쓰기 :

답변 1

채택됨

eyekiss님의 답변

and b.it_id = '$it_id' 

위의 조건을 추가해보세요..
 

주소복사
채택됨
답변의 댓글
coDribble님의 댓글
이제 확인했습니다.. 감사합니다! 잘 되네요~!!

알려주신 방법을 넣으니... a.it_id = '$it_id' and b.it_id = '$it_id' 가 되는데

반복되는 느낌이 들어서 저 2개를 묶거나, 아님 조건을 좀 더 확실하게(?) 걸 수는 없을까하는 마음에

join / left join 구글링 하면서 좀 더 보완(?) 해봤습니다...;;

a.it_id = '$it_id' 인것을 가져오되, on 절을 추가해서 a, b 의 it_id 가 같은게 불러와지게...(?) 해봤습니다;;

$use_sql = " select count(*) as cnt
                    from {$g5['g5_shop_cart_table']} a join {$g5['g5_shop_item_use_table']} b
                    on ( a.od_id = b.od_id )
                    where a.od_id = '$od_id'
                      and a.it_id = '$it_id'
                      and a.mb_id = '{$member['mb_id']}'
                      and a.ct_status = '완료' ";
답변을 작성하시기 전에 로그인 해주세요.
전체 87,742 | RSS
고마운 분의 도움으로 질문을 해결하셨다면, 채택을 눌러서 감사의 마음을 전하세요.
어떻게 질문해야 할지 모른다면 질문하는 방법을 읽어 보신후 질문해 보세요.
QA 내용 검색

회원로그인

(주)에스아이알소프트 (06253) 서울특별시 강남구 도곡로1길 14, 6층 624호 (역삼동, 삼일프라자) 대표메일:admin@sir.kr
사업자등록번호:217-81-36347 대표:홍석명 통신판매업신고번호:2014-서울강남-02098호 개인정보보호책임자:이총

© SIRSOFT