회원 검색할때 초성으로도 가능하게 채택완료
쿨가이쭌
2년 전
조회 2,223
지금 레벨6인 회원들만 볼수있는 게시판을 만들어서 사용중인데
회원수가 점점 많아지니 검색기능을 추가하여 사용하고 있었는데
원래 기존 회원아이디, 이름을 검색하여 해당 회원을 보여지게 하고있었습니다.
근데 혹시 이름초성이나 생년월일? 같은걸로도 불러오게 할수있는지 궁금합니다!
if($search_id){
$search = "and mb_id = '$search_id' or mb_name = '$search_id' ";
};
현재 위에 코드로 검색기능을 구현하고 있습니다!!
댓글을 작성하려면 로그인이 필요합니다.
답변 2개
채택된 답변
+20 포인트
2년 전
// 초성은 대충 이렇게 하면 나오지 않을가 싶은데요
</p>
<p>if($search_id){</p>
<p> $search = [];</p>
<p> $search[] = "mb_id = '$search_id'";</p>
<p> $search[] = "mb_name = '$search_id' ";</p>
<p> </p>
<p> switch($search_id){</p>
<p> case'ㄱ': </p>
<p> $search[] = " (mb_name RLIKE '^(ㄱ|ㄲ)' OR ( mb_name >= '가' AND mb_name < '나' ))"; </p>
<p> break;</p>
<p> case'ㄴ': </p>
<p> $search[] = " (mb_name RLIKE '^ㄴ' OR ( mb_name >= '나' AND mb_name < '다' ))"; </p>
<p> break;</p>
<p> case'ㄷ': </p>
<p> $search[] = " (mb_name RLIKE '^(ㄷ|ㄸ)' OR ( mb_name >= '다' AND mb_name < '라' ))"; </p>
<p> break;</p>
<p> case'ㄹ': </p>
<p> $search[] = " (mb_name RLIKE '^ㄹ' OR ( mb_name >= '라' AND mb_name < '마' ))"; </p>
<p> break;</p>
<p> case'ㅁ': </p>
<p> $search[] = " (mb_name RLIKE '^ㅁ' OR ( mb_name >= '마' AND mb_name < '바' ))"; </p>
<p> break;</p>
<p> case'ㅂ': </p>
<p> $search[] = " (mb_name RLIKE '^ㅂ' OR ( mb_name >= '바' AND mb_name < '사' ))"; </p>
<p> break;</p>
<p> case'ㅅ': </p>
<p> $search[] = " (mb_name RLIKE '^(ㅅ|ㅆ)' OR ( mb_name >= '사' AND mb_name < '아' ))"; </p>
<p> break;</p>
<p> case'ㅇ': </p>
<p> $search[] = " (mb_name RLIKE '^ㅇ' OR ( mb_name >= '아' AND mb_name < '자' ))"; </p>
<p> break;</p>
<p> case'ㅈ': </p>
<p> $search[] = " (mb_name RLIKE '^(ㅈ|ㅉ)' OR ( mb_name >= '자' AND mb_name < '차' ))"; </p>
<p> break;</p>
<p> case'ㅊ': </p>
<p> $search[] = " (mb_name RLIKE '^ㅊ' OR ( mb_name >= '차' AND mb_name < '카' ))"; </p>
<p> break;</p>
<p> case'ㅋ': </p>
<p> $search[] = " (mb_name RLIKE '^ㅋ' OR ( mb_name >= '카' AND mb_name < '타' ))"; </p>
<p> break;</p>
<p> case'ㅌ': </p>
<p> $search[] = " (mb_name RLIKE '^ㅌ' OR ( mb_name >= '타' AND mb_name < '파' ))"; </p>
<p> break;</p>
<p> case'ㅍ': </p>
<p> $search[] = " (mb_name RLIKE '^ㅍ' OR ( mb_name >= '파' AND mb_name < '하' ))"; </p>
<p> break;</p>
<p> case'ㅎ': </p>
<p> $search[] = " (mb_name RLIKE '^ㅎ' OR ( mb_name >= '하'))"; </p>
<p> break;</p>
<p> }</p>
<p> </p>
<p> $query = implode(" and ", $search);</p>
<p>};</p>
<p>
로그인 후 평가할 수 있습니다
답변에 대한 댓글 2개
�
쿨가이쭌
2년 전
ㅠㅠ 안나오네요 ㅠㅠ 원래거 지우고 올려주신걸로 덮어씌웠는데 안나와요
�
포인트적립
2년 전
제가 댓글 드렸지만 지금 소스 다시 보니 저 소스로 하면 안나오는게 맞을듯해요
저 대로 하면 쿼리문이
검색어가 ㄱ 초성이다 하면
mb_id = 'ㄱ' and mb_name ='ㄱ' and (mb_name RLIKE '^(ㄱ|ㄲ)' OR ( mb_name >= '가' AND mb_name < '나' ))
위처럼 될테니 안되겠네요
쿼리문 중간을 OR로 변경 응용해서 해보세요
저 대로 하면 쿼리문이
검색어가 ㄱ 초성이다 하면
mb_id = 'ㄱ' and mb_name ='ㄱ' and (mb_name RLIKE '^(ㄱ|ㄲ)' OR ( mb_name >= '가' AND mb_name < '나' ))
위처럼 될테니 안되겠네요
쿼리문 중간을 OR로 변경 응용해서 해보세요
댓글을 작성하려면 로그인이 필요합니다.
2년 전
$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) ";
로 하셔야 합니다
로그인 후 평가할 수 있습니다
답변에 대한 댓글 2개
�
쿨가이쭌
2년 전
원래 올려주신대로 사용하고있었어요 ㅠㅠ 제가 궁금한건 초성이나 한글자라도 포함된 단어가 있으면 나오게 하고싶은거에요
�
엑스엠엘
2년 전
괄호 문제가 있는 부분을 말씀드린 겁니다.
참고하시라고요.
참고하시라고요.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인