후기중복 방지관련
본문
/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이 떠야 하는게 아닌가 싶은데...
어느 부분이 잘못된건지를 모르겠습니다..ㅠㅠㅠ;;
조언 주시면 감사하겠습니다ㅠㅠㅠ
!-->
답변을 작성하시기 전에 로그인 해주세요.