배열에서 부분취소, 전체취소 구분

배열에서 부분취소, 전체취소 구분

QA

배열에서 부분취소, 전체취소 구분

본문

<?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

근데.. 이해가 안되요 전체취소하고 부분취소를 넣는다는건가요? 요점을 제대로 얘기해줘요

정확히 말하면 누가 만들어준 검색 기능인데요

부분취소 전체취소가 작동을 하지 않아 살펴 봤더니

배열로 체크박스 구성 -> 멀티체크 -> 배열로 넘김 -> 넘겨서 implode로 where문으로 찾는거더라구요 당연히 AND od_status IN ('입금', '완료', '전체취소') 가 되버리면 찾을 수 없겠죠. 전체취소라는건 없으니까요.

근데 배열, 멀티체크 등이 혼재되어 있어서

저기다가

 case '전체취소':
            $where[] = " od_status = '취소' ";
            break;
case '부분취소':
            $where[] = " od_status IN('주문', '입금', '준비', '배송', '완료') and od_cancel_price > 0 ";
            break;

이걸 버무리려니 실력이 모자라서 그렇습니다

아무래도 검색 기능 저걸 아예 빼버리던지 아니면 기존에 있던걸로 교체 하세요 

만들어준거 봐도 쿼리 잘못 짠거 같아요 

switch문 보면 디폴트에 

od_id IN ( SELECT od_id FROM `g5_shop_cart` WHERE ct_status = '$od_status' ) 

이렇게 쿼리는 못날려요 in 함수에는 상태값만 넣을수있구요 아니면 서브 쿼리를 쓴다해도 

위치 선정이 올바르지 않구요 

 

$where[] = " od_status = '$od_status' ";

이게 기본적인 방법이구요 (영카트 주문 리스트에 정식버전에 이렇게 쓰여있구요)

그리고 조건문에 empty .... 이런거 있잖아요 그걸 주석처리 하시던지 아니면 없애버리세요

$orderStatus 배열 선언한것도 없애시구요 

아니면 영카트 정식버전에서 카피해서 복구하신게 좋을것 같아요 

 

 

아 ㅠㅠ 제가 말을 못하는건지 이해가 안되신거 같고 답변도 제가 이해를 못하겠습니다

검색이냐 아니냐가 중요한게 아니구요 사실..


<?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) . "') ";

이거에다가 어떻게 하면 부분취소와 전체취소를 넣을 수 있을지에 대한 질문입니다.

음... 지금 질문자분이 생각하신게 주문내역에 보면 체크박스로 선택을해서 기능을 쓸수있는 그런 기능이 없어요
영카트를 엄청 써봤지만 이런 기능이 어디다 쓰인진 모르겠는데 위에 보면 다중검색 기능이 있잖아요 라디오박스를 눌러서 검색을 하면 되거든요

근데 $orderStatus = array ("주문", "입금", "준비", "배송", "완료", "전체취소", "부분취소");  이 배열을
체크 박스로해서 배열에 넣으려는 이유를 모르겠어요
html 테이블에 상태 부분을 추가하려는건지 뭐하는건지 모르겠어요 처음에 질문했던걸 봐도 무슨내용인지 모르겠구요 전체 취소와 부분취소 쿼리는 이미 되어 있는데 왜 굳이 배열에 추가를 해서 하려는건지..
주문, 입금 등 이런 상태필드는 고정된거라서 그대로 쓰시면 되는데요
전에 제가 주문리스트에 상태필드로 이루어진 체크박스로 표시하려고 한건지 생각했거든요 근데 다시 답변 보면 검색 기능에 대해서 얘기하신거 보니가.. 아닌것 같고 다시 마지막에 길게 답 쓰신거보면 제가 생각한게 맞는건지 영문을 모르겠어요..

주문내역을 수정하려는게 아니고 전체취소 부분취소를 주문내역에서 힌트를 얻은거에요. 기존에 존재하지 않는 페이지를 만들고 있구요

배열 및 함수는 건드리면 안되는 상황이에요 여러가지가 얽혀있어서

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

회원로그인

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