특정필드 검색시 해당 필드만 완전일치 하는 검색어 출력 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

특정필드 검색시 해당 필드만 완전일치 하는 검색어 출력 정보

특정필드 검색시 해당 필드만 완전일치 하는 검색어 출력

본문

여분 필드로 검색을 하는데 1을 검색 하니 11~19까지 나와 버려서 삽질 좀 했습니다.
엄청 간단 한거였는데 삽질 했네요.

원하는 결과는 1을 검색하면 1만 나오게..

common.lib.php

line 585 부분

기존 소스

                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;


수정


                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 속도가 빠름
				case "wr_25" :
                    if (preg_match("/[a-zA-Z]/", $search_str)) 
                        $str .= "LOWER($field[$k]=LOWER('$search_str')"; 
                    else 
                        $str .= "$field[$k]= '$search_str' "; 
                    break; 
                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;


원하는 필드를 일치 검색 나오게 할려면 아래 소스 추가


case "wr_25" :
                    if (preg_match("/[a-zA-Z]/", $search_str)) 
                        $str .= "LOWER($field[$k]=LOWER('$search_str')"; 
                    else 
                        $str .= "$field[$k]= '$search_str' "; 
                    break; 


분명히 알고 계신 분이 더 많겠지만
질답, 팁에 없는 내용 같아 올려 봅니다.

응용하면 특정 게시판 구분 지어서 쓸 수 있겠네요.
추천
0
  • 복사

댓글 3개

© SIRSOFT
현재 페이지 제일 처음으로