후기중복 방지관련

후기중복 방지관련

QA

후기중복 방지관련

본문

/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

and b.it_id = '$it_id' 

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

이제 확인했습니다.. 감사합니다! 잘 되네요~!!

알려주신 방법을 넣으니... 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 = '완료' ";

아... join 없이도 2개의 테이블의 데이터들을 가져올 수 있나보네요!! 2개 테이블 대조 로 구글링하니깐 join 문이 나와서 그거로 썼던거였는데... 좋은 정보 감사드립니다!!

답변을 작성하시기 전에 로그인 해주세요.
전체 445
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT