회원 검색할때 초성으로도 가능하게
본문
지금 레벨6인 회원들만 볼수있는 게시판을 만들어서 사용중인데
회원수가 점점 많아지니 검색기능을 추가하여 사용하고 있었는데
원래 기존 회원아이디, 이름을 검색하여 해당 회원을 보여지게 하고있었습니다.
근데 혹시 이름초성이나 생년월일? 같은걸로도 불러오게 할수있는지 궁금합니다!
if($search_id){
$search = "and mb_id = '$search_id' or mb_name = '$search_id' ";
};
현재 위에 코드로 검색기능을 구현하고 있습니다!!
답변 2
// 초성은 대충 이렇게 하면 나오지 않을가 싶은데요
if($search_id){
$search = [];
$search[] = "mb_id = '$search_id'";
$search[] = "mb_name = '$search_id' ";
switch($search_id){
case'ㄱ':
$search[] = " (mb_name RLIKE '^(ㄱ|ㄲ)' OR ( mb_name >= '가' AND mb_name < '나' ))";
break;
case'ㄴ':
$search[] = " (mb_name RLIKE '^ㄴ' OR ( mb_name >= '나' AND mb_name < '다' ))";
break;
case'ㄷ':
$search[] = " (mb_name RLIKE '^(ㄷ|ㄸ)' OR ( mb_name >= '다' AND mb_name < '라' ))";
break;
case'ㄹ':
$search[] = " (mb_name RLIKE '^ㄹ' OR ( mb_name >= '라' AND mb_name < '마' ))";
break;
case'ㅁ':
$search[] = " (mb_name RLIKE '^ㅁ' OR ( mb_name >= '마' AND mb_name < '바' ))";
break;
case'ㅂ':
$search[] = " (mb_name RLIKE '^ㅂ' OR ( mb_name >= '바' AND mb_name < '사' ))";
break;
case'ㅅ':
$search[] = " (mb_name RLIKE '^(ㅅ|ㅆ)' OR ( mb_name >= '사' AND mb_name < '아' ))";
break;
case'ㅇ':
$search[] = " (mb_name RLIKE '^ㅇ' OR ( mb_name >= '아' AND mb_name < '자' ))";
break;
case'ㅈ':
$search[] = " (mb_name RLIKE '^(ㅈ|ㅉ)' OR ( mb_name >= '자' AND mb_name < '차' ))";
break;
case'ㅊ':
$search[] = " (mb_name RLIKE '^ㅊ' OR ( mb_name >= '차' AND mb_name < '카' ))";
break;
case'ㅋ':
$search[] = " (mb_name RLIKE '^ㅋ' OR ( mb_name >= '카' AND mb_name < '타' ))";
break;
case'ㅌ':
$search[] = " (mb_name RLIKE '^ㅌ' OR ( mb_name >= '타' AND mb_name < '파' ))";
break;
case'ㅍ':
$search[] = " (mb_name RLIKE '^ㅍ' OR ( mb_name >= '파' AND mb_name < '하' ))";
break;
case'ㅎ':
$search[] = " (mb_name RLIKE '^ㅎ' OR ( mb_name >= '하'))";
break;
}
$query = implode(" and ", $search);
};
$search = "and mb_id = '$search_id' or mb_name = '$search_id' ";
는
$search = "and (mb_id = '$search_id' or mb_name = '$search_id' )";
또는
$search = "and '$search_id' in ( mb_name , mb_id) ";
로 하셔야 합니다
답변을 작성하시기 전에 로그인 해주세요.