다중 검색 필터 중 and 연산을 하고싶습니다.

다중 검색 필터 중 and 연산을 하고싶습니다.

QA

다중 검색 필터 중 and 연산을 하고싶습니다.

본문

https://sir.kr/g5_tip/3003

 

위 소스를 활용하여 다중 검색 필터를 만들고있습니다.

 

제작중인 사이트

https://fooding.io/cosmos/bbs/board.php?bo_table=free

 

체크박스로 이루어져있으며,

'업종(wr_1~4) and 연령대(wr_5~10) and 특별 큐레이션(wr_11~15)' 형태로 검색을 하고싶습니다.

항목(하위항목)

하위항목은 or 연산, 항목별로는 and 연산이 되어야합니다.

(각 여분필드에는 하위항목에 대한 값이 들어있습니다. wr_1=IT wr_2=마케팅 ...)

 

지금은 모든 여분필드가 or로 검색이되고 있어서요.

위코드를 어떻게 수정해야할지 막막합니다. 도움을 청합니다..

이 질문에 댓글 쓰기 :

답변 2

비트 연산을 하면

'업종(wr_1) 

연령대(wr_2)

특별 큐레이션(wr_3)

이렇게만 있어도 충분합니다.

write.skin.php에서

<input type="checkbox" name="wr_1s[]" value="1" >IT

<input type="checkbox" name="wr_1s[]" value="2" >마케팅

<input type="checkbox" name="wr_1s[]" value="4" >제조 

<input type="checkbox" name="wr_1s[]" value="8" >학원 

<input type="checkbox" name="wr_1s[]" value="16" >병원

이런식으로 입력합니다.

 

write_update.php에서는

$wr_1=array_sum( $_POST['wr_1s']);

이렇게 하고

 

list에서 검색할 때는

 

 

$wr_1=array_sum( $_REQUEST['wr_1s']);

select ... from ... where wr_1 & '$wr_1_search' ...

 

이렇게 하시면 됩니다.

 

 

&wr_1=마케팅&IT&제조&wr_2=이십대&삼십대&wr_2=매운음식
이런 형태가
비트 방식으로 바뀌면
<input type="checkbox" name="wr_1s[]" value="1" >IT
<input type="checkbox" name="wr_1s[]" value="2" >마케팅
<input type="checkbox" name="wr_1s[]" value="4" >제조
<input type="checkbox" name="wr_1s[]" value="8" >학원
<input type="checkbox" name="wr_1s[]" value="16" >병원
이것 기준으로

&wr_1=6&wr_2=...
6이라고 써야 합니다.
마케팅 2 + 제조 4 =6

$search_total = '';

$search1 = '';
for ($i=1; $i< 4; $i++) {
    if($_GET['wr_'.$i]){
        if($search1 ==''){
            $search1 = '(';
            $search1 .=  $_GET['wr_'.$i];
        }else{
            $search1 .=  ' or '.$_GET['wr_'.$i];
        }

        
    }
}
if($search1){
    $search1 .=')';

    $search_total = $search1;
}


$search2 = '';
for ($i=5; $i< 10; $i++) {
    if($_GET['wr_'.$i]){
        if($search2 ==''){
            $search2 = '(';
            $search2 .=  $_GET['wr_'.$i];
        }else{
            $search2 .=  ' or '.$_GET['wr_'.$i];
        }

        
    }
}
if($search2){
    $search2 .=')';
    if($search_total != ''){
        $search_total .= ' or '. $search2;
    }else{
        $search_total = $search1;
    }
}


echo $search_total;

대충 이런식이면 되지않을까요?

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

회원로그인

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