다중 검색관련 질문드립니다.
본문
다중검색 질문입니다.
예를들어 회원관리에서 회원레벨이 2인 회원을 보려면
도메인/adm/member_list.php?token=80ee1996a45e12dc49a50faff2528875&sfl=mb_level&stx=2
위처럼 하면 되는데,
여기에 회원레벨이 2이면서 이름이 angel 인 회원을 보려면
도메인/adm/member_list.php?token=80ee1996a45e12dc49a50faff2528875&sfl=mb_level&stx=2&sfl=mb_name&stx=angel
위처럼 하면 이름이 angel인 회원만 검색이 됩니다.
위 조건대로 회원레벨이 2이면서 이름이 angel 인 회원만 보려면 방법이 있는지 문의드립니다. (다중 검색이 가능한지 문의드립니다.)
답변 2
관리자 회원리스트에서 기본적인 기능으로는 불가능 합니다.
아래 소스를 보시면 아시겠지만 stx, sfl은 각 하나씩만 대입하고 있습니다.
원하시는 결과를 보시려면 아래 소스를 커스텀 해야합니다.
$sql_search = " where (1) ";
if ($stx) {
$sql_search .= " and ( ";
switch ($sfl) {
case 'mb_point' :
$sql_search .= " ({$sfl} >= '{$stx}') ";
break;
case 'mb_level' :
$sql_search .= " ({$sfl} = '{$stx}') ";
break;
case 'mb_tel' :
case 'mb_hp' :
$sql_search .= " ({$sfl} like '%{$stx}') ";
break;
default :
$sql_search .= " ({$sfl} like '{$stx}%') ";
break;
}
$sql_search .= " ) ";
}
테스트 해볼 환경이 안되서 확인을 못해봤습니다.
아마 에러날겁니다. 대강 참고만 해주세요.
도메인/adm/member_list.php?token=80ee1996a45e12dc49a50faff2528875&sfl=mb_level||mb_name&stx=2||angel&sop=and
function get_search_text($stx,$sfl,$sop){
if ($stx) {
$sql_search = " {$sop} ";
switch ($sfl) {
case 'mb_point' :
$sql_search .= " ({$sfl} >= '{$stx}') ";
break;
case 'mb_level' :
$sql_search .= " ({$sfl} = '{$stx}') ";
break;
case 'mb_tel' :
case 'mb_hp' :
$sql_search .= " ({$sfl} like '%{$stx}') ";
break;
default :
$sql_search .= " ({$sfl} like '{$stx}%') ";
break;
}
}
return $sql_search;
}//end function
$sql_common = " from {$g5['member_table']} ";
$sql_search = " where (1) ";
$arSfl = explode('||',$sfl);
$arStx = explode('||',$stx);
foreach($arSfl as $key=>$val){
if($key > 0) $tmp_sop = $sop;
$sql_search .= " and ( ";
$sql_search .= get_search_text($arStx[$key],$val,$tmp_sop);
$sql_search .= " ) ";
}//end foreach