배열에서 부분취소, 전체취소 구분
본문
<?php $orderStatus = array ("주문", "입금", "준비", "배송", "완료", "전체취소", "부분취소"); ?>
이렇게 나열한 것을 체크박스($order_status[])로 멀티체크해서 배열로 다시 넘깁니다.
if (!empty($order_status)) $sql_status = " AND od_status IN ( '" . implode("','", $order_status) . "') ";
그 후 이렇게 해서 가져와서 검색을 하게 되는데요
여기서 영카트에는 전체취소, 부분취소라는 od_status가 존재하지 않으므로
뭔가 다른 처리를 해야 하는데
관리자의 orderlist.php에
switch($od_status) {
case '전체취소':
$where[] = " od_status = '취소' ";
break;
case '부분취소':
$where[] = " od_status IN('주문', '입금', '준비', '배송', '완료') and od_cancel_price > 0 ";
break;
default:
$where[] = " od_id IN ( SELECT od_id FROM `g5_shop_cart` WHERE ct_status = '$od_status' ) ";
break;
}
이런 소스가 있더라구요
이걸 응용해서 저기다 넣고 싶은데 어떻게 해야 할지 떠오르지 않습니다 ㅠㅠ
어떻게 해야 부분취소, 전체취소를 검색할 수 있을까요?
답변 2
근데.. 이해가 안되요 전체취소하고 부분취소를 넣는다는건가요? 요점을 제대로 얘기해줘요
아무래도 검색 기능 저걸 아예 빼버리던지 아니면 기존에 있던걸로 교체 하세요
만들어준거 봐도 쿼리 잘못 짠거 같아요
switch문 보면 디폴트에
od_id IN ( SELECT od_id FROM `g5_shop_cart` WHERE ct_status = '$od_status' )
이렇게 쿼리는 못날려요 in 함수에는 상태값만 넣을수있구요 아니면 서브 쿼리를 쓴다해도
위치 선정이 올바르지 않구요
$where[] = " od_status = '$od_status' ";
이게 기본적인 방법이구요 (영카트 주문 리스트에 정식버전에 이렇게 쓰여있구요)
그리고 조건문에 empty .... 이런거 있잖아요 그걸 주석처리 하시던지 아니면 없애버리세요
$orderStatus 배열 선언한것도 없애시구요
아니면 영카트 정식버전에서 카피해서 복구하신게 좋을것 같아요