쪼개진 여분필드 검색문의드립니다!!!

쪼개진 여분필드 검색문의드립니다!!!

QA

쪼개진 여분필드 검색문의드립니다!!!

본문

안녕하세요~ 게시판 리스트 검색작업중인데
도저히 해결이 안되는 부분이 있어서 문의드립니다

 

 

예를 들어서 여분필드 wr_1 란에 콤마(,)를 이용해서


게시물1번에는 사과,딸기,배...

게시물 2번에는 빨간사과,멜론,수박...

 

이렇게 여러단어를 입력해서 등록을 했을 경우(여분필드 쪼개서 사용)

 

게시판 목록에서 "사과"를 검색하면 정확히 "사과"라는 단어만 검색하려면 어떻게 해야하나요?

 

지금 리스트 검색부분에 sfl을 wr_1로 지정해놓았구요

사과를 검색하면 게시물 1번만 검색되서 나와야 하는데

 

게시물 2번에도 빨간사과가 등록되어 있기 때문에

게시물 1번, 2번이 모두 결과로 나오고 있습니다.

 

 

 

lib/common.lib.php 파일내에서

 

case "wr_1" : 

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

 

이런식으로 일치하도록 지정하는건 질답게시판에서 배웠는데

이 여분필드가 쪼개져있을떄 구분자별 일치단어를 지정하려면 어떻게 해야 할까요??

 

$w1 = explode(",", $list[$i]['wr_1']);
                $w1_1 = $wr1[0];
                $w1_2 = $wr1[1];
                $w1_3 = $wr1[2];
                $w1_4 = $wr1[3];
                $w1_5 = $wr1[4];
                $w1_6 = $wr1[5];
                $w1_7 = $wr1[6];
                $w1_8 = $wr1[7];
echo $w1_1;

 

 

요런식으로 쪼갠값들을 지정해주면 될것 같은데

아무리해봐도 안되서요~~ㅜㅜ

 

 

이 질문에 댓글 쓰기 :

답변 4

위 case문에서 if~else~ 모두 지우고

$str .= "FIND_IN_SET('$search_str' , wr_1) > 0 ";

 

mysql 버젼이 낮으면 안 됩니다 ( < 5.6 ??)

 

하위버젼에서 아래처럼 하면 됩니다. 참고 하세요(모르는 분이 보여서....)

 

str.="SUBSTRING_INDEX(wr_1, ',' , 1) ='$search_str' or SUBSTRING_INDEX(wr_1, ',' , -1) ='$search_str'  or INSTR(wr_1 , ',{$search_str},') ";

 

처음 설계할 때 검색이 필요한 값이라면 저렇게 한 필드에 구겨 넣도록 하는 것은 속도면에서도

좋지않을테니 필드를 각각 만들고 index넣고 하는 것이 좋을 것입니다

 

현재 필드 저장방법으로는 정확하게 검색이 불가능합니다.

 

,사과,,딸기,,배,

 

혹은

 

,사과,딸기,배,

 

와 같이 시작과 끝에 구분자를 넣게 되신다면, 그때는 가능할거라 생각합니다.

 

구분자를 양끝에 넣고 저장하신 경우에는 ,사과, 로 검색(like)하시면, 딱 사과만 검색이 되어 나오게 됩니다.

답변감사합니다~~!!ㅜㅜ
구분자를
|사과||배||딸기|
이런식으로 양끝에 넣어서 저장했는데 저 구분자를 뺀 함수를 어떻게 구현해야 하는지
감이 안오네요..ㅠㅠ

common.lib.php 파일에서 어떻게 하나씩 떼서 인식하게 할 수 있을까요??ㅜㅜ

SELECT * FROM #table WHERE FIND_IN_SET("사과", wr_1) <> 0

답변을 작성하시기 전에 로그인 해주세요.
전체 16
QA 내용 검색

회원로그인

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