특정필드 검색시 해당 필드만 완전일치 하는 검색어 출력 > 그누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개

전체 3,313 |RSS
그누4 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT