배열에서 부분취소, 전체취소 구분 채택완료
이렇게 나열한 것을 체크박스($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 배열 선언한것도 없애시구요
아니면 영카트 정식버전에서 카피해서 복구하신게 좋을것 같아요
답변에 대한 댓글 3개
영카트를 엄청 써봤지만 이런 기능이 어디다 쓰인진 모르겠는데 위에 보면 다중검색 기능이 있잖아요 라디오박스를 눌러서 검색을 하면 되거든요
근데 $orderStatus = array ("주문", "입금", "준비", "배송", "완료", "전체취소", "부분취소"); 이 배열을
체크 박스로해서 배열에 넣으려는 이유를 모르겠어요
html 테이블에 상태 부분을 추가하려는건지 뭐하는건지 모르겠어요 처음에 질문했던걸 봐도 무슨내용인지 모르겠구요 전체 취소와 부분취소 쿼리는 이미 되어 있는데 왜 굳이 배열에 추가를 해서 하려는건지..
주문, 입금 등 이런 상태필드는 고정된거라서 그대로 쓰시면 되는데요
전에 제가 주문리스트에 상태필드로 이루어진 체크박스로 표시하려고 한건지 생각했거든요 근데 다시 답변 보면 검색 기능에 대해서 얘기하신거 보니가.. 아닌것 같고 다시 마지막에 길게 답 쓰신거보면 제가 생각한게 맞는건지 영문을 모르겠어요..
배열 및 함수는 건드리면 안되는 상황이에요 여러가지가 얽혀있어서
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 8개
부분취소 전체취소가 작동을 하지 않아 살펴 봤더니
배열로 체크박스 구성 -> 멀티체크 -> 배열로 넘김 -> 넘겨서 implode로 where문으로 찾는거더라구요 당연히 AND od_status IN ('입금', '완료', '전체취소') 가 되버리면 찾을 수 없겠죠. 전체취소라는건 없으니까요.
근데 배열, 멀티체크 등이 혼재되어 있어서
저기다가
case '전체취소':
$where[] = " od_status = '취소' ";
break;
case '부분취소':
$where[] = " od_status IN('주문', '입금', '준비', '배송', '완료') and od_cancel_price > 0 ";
break;
이걸 버무리려니 실력이 모자라서 그렇습니다
흠.. 좀 헷갈리게 얘기하셨네요..
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
검색이냐 아니냐가 중요한게 아니구요 사실..
<?php $orderStatus = array ("주문", "입금", "준비", "배송", "완료", "전체취소", "부분취소"); ?>
이렇게 나열한 것을 체크박스($order_status[])로 멀티체크해서 배열로 다시 넘깁니다.
if (!empty($order_status)) $sql_status = " AND od_status IN ( '" . implode("','", $order_status) . "') ";
여기서 전체취소와 부분취소가 들어가는게 핵심입니다.
if (!empty($order_status)) 이런 부분들은 다른 소스에 쓰이는거기 때문에 지울 수 없구요
만약 체크박스에서 체크를 주문, 입금, 부분취소를 체크했다면
배열로 넘어가서
$sql_status = " AND od_status IN ( '주문','입금','부분취소' ) ";
이렇게 되겠죠
근데 주문이나 입금은 영카트 상에 원래 있는 상태이므로 검색이 됩니다
하지만 부분취소라는 부분은 없기 때문에 검색이 안되겠죠
영카트 상에 존재하는 상태는 '주문', '입금', '준비', '배송', '완료', '취소' 이기 때문입니다
그러나 원하는 것은 부분취소와 전체취소에 대한 검색이므로
예시로 그에 대한 소스를 찾아본겁니다.
그랬더니
od_status = '취소' 면 전체취소, od_status IN('주문', '입금', '준비', '배송', '완료') and od_cancel_price > 0 면 부분취소를 정의할 수 있다는 정보를 얻었습니다.
그래서
if (!empty($order_status)) $sql_status = " AND od_status IN ( '" . implode("','", $order_status) . "') ";
이거에다가 어떻게 하면 부분취소와 전체취소를 넣을 수 있을지에 대한 질문입니다.