테스트 사이트 - 개발 중인 베타 버전입니다

게시판 작성자 (이름) 검색 질문드립니다 채택완료

나나26 7년 전 조회 2,645

게시판 목록에서 작성자 이름을 검색하게되면

 

"홍길동"일 경우 "홍길동"을 다 쳐야만 나와서요ㅜㅜ

 

여분필드도 검색이 되도록 추가했는데 여분필드는 "홍길"만 검색해도 홍길동이 같이 나오는데..

 

wr_name 으로 검색하면 정확하게 이름을 다 써야만 나와서요ㅜㅜ

 

혹시 이거 어디서 수정해야할까요

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

답변 2개

채택된 답변
+20 포인트
e
7년 전

/lib/common.lib.php 636줄 근처에서 아래의 소스에서 이름 검색 부분에 주석(//)을 하면 됩니다.

 

            $str .= $op2;
            switch ($field[$k]) {
                case "mb_id" :
                //case "wr_name" :
                //    $str .= " $field[$k] = '$s[$i]' ";
                //    break;

                case "wr_hit" :
                case "wr_good" :
                case "wr_nogood" :
                    $str .= " $field[$k] >= '$s[$i]' ";
                    break;

                // 번호는 해당 검색어에 -1 을 곱함
                case "wr_num" :
                    $str .= "$field[$k] = ".((-1)*$s[$i]);
                    break;
                case "wr_ip" :
                case "wr_password" :
                    $str .= "1=0"; // 항상 거짓
                    break;
                // LIKE 보다 INSTR 속도가 빠름
                default :
                    if (preg_match("/[a-zA-Z]/", $search_str))
                        $str .= "INSTR(LOWER($field[$k]), LOWER('$search_str'))";
                    else
                        $str .= "INSTR($field[$k], '$search_str')";
                    break;
            }

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

답변에 대한 댓글 2개

e
eyekiss
7년 전
제가 올린 소스 아래 default 보시면 INSTR 로 찾아줍니다. 그래서 주석처리하는 겁니다.
// LIKE 보다 INSTR 속도가 빠름
나나26
7년 전
이렇게 하니까 바로 검색 잘되네요~~ 넘 감사합니다^-^

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

플래토
7년 전

eyekiss 님의 글을 이어 좀 다른방식은

 

case "wr_name" :

    $str .= " $field[$k] like '%{$s[$i]}%' ";

    break;

 

로 변경하는 것도 방법입니다.

 

검색자체가  100% 일치하는  ' = ' 이 아닌 Like 검색으로 하면 해결됩니다.

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

답변에 대한 댓글 1개

나나26
7년 전
의견주셔서 감사합니다~~ㅜㅜ

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

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

로그인