테스트 사이트 - 개발 중인 베타 버전입니다

배열에서 부분취소, 전체취소 구분 채택완료

블랑숑 4년 전 조회 2,113

 

이렇게 나열한 것을 체크박스($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개

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

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


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

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

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

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

댓글을 작성하려면 로그인이 필요합니다.

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 8개

블랑숑
4년 전
네 검색에 전체랑 부분취소를 넣고 싶어요
블랑숑
4년 전
근데 현재 소스가 배열에 멀티체크로 되어 있고 od_status = 함수라 전체랑 부분을 어떻게 구분지어 넣을 수 있을지 궁금해요
릴보이즈
4년 전
전체? 하고 부분취소? 그런 기능이 없을건데 왜 넣으려는거에요? 그럼 따로 기능도 만들어야될것같은데
블랑숑
4년 전
주문리스트에는 본문에 써놓은것처럼 전체취소 부분취소 검색 기능이 있어 동일하게 가능해야해서요
블랑숑
4년 전
본문에 있는 소스를 버무리면 될 것 같은데 배열에 멀티체크가 있어 제 실력으로 쉽지가 않네요
릴보이즈
4년 전
아~ 리스트에 조건을 달고싶다는거군요! 난또 ㅋㅋㅋㅋ 리스트에 해야된다고 얘길 안하시니 쓰기, 수정에 있는데 넣고싶어하니..
블랑숑
4년 전
정확히 말하면 누가 만들어준 검색 기능인데요

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

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

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

저기다가

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

이걸 버무리려니 실력이 모자라서 그렇습니다
릴보이즈
4년 전
네?? 검색 기능이라구요? 목록에 주문, 취소 등 상태 표시를 멀티로 하는게 아니구요?
흠.. 좀 헷갈리게 얘기하셨네요..

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인