2026, 새로운 도약을 시작합니다.

다중 검색 필터 중 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개

채택된 답변
+20 포인트

비트 연산을 하면

'업종(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' ...

이렇게 하시면 됩니다.

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

답변에 대한 댓글 2개

비트 연산에 대한 내용을 좀 알아야 가능한 방법입니다.
&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;

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

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

답변에 대한 댓글 1개

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

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

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

로그인
🐛 버그신고