다중 검색 필터 중 and 연산을 하고싶습니다.
본문
위 소스를 활용하여 다중 검색 필터를 만들고있습니다.
제작중인 사이트
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' ...
이렇게 하시면 됩니다.
$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;
대충 이런식이면 되지않을까요?