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

후기중복 방지관련

컨텐츠몰 10% 할인 기간연장!
그누보드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 = '완료' ";
답변을 작성하시기 전에 로그인 해주세요.
전체 85,812 | RSS
고마운 분의 도움으로 질문을 해결하셨다면, 채택을 눌러서 감사의 마음을 전하세요.
어떻게 질문해야 할지 모른다면 질문하는 방법을 읽어 보신후 질문해 보세요.
QA 내용 검색

회원로그인

진행중 포인트경매

  1. 참여5 회 시작20.04.06 08:27 종료20.04.13 08:27
  2. 참여49 회 시작20.04.04 09:21 종료20.04.11 09:21

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

© SIRSOFT