게시판 검색 기능에 [전체] 조회 기능 부여하기 > 그누3 팁자료실

그누3 팁자료실

게시판 검색 기능에 [전체] 조회 기능 부여하기 정보

그누호환 게시판 검색 기능에 [전체] 조회 기능 부여하기

본문

** 다음 내용중 lib/gnuboard.lib.php 파일은 그누보드가 버전업이나, 패치 될때마다 수정작업을 하셔야 합니다.
** 개발 및 테스트 버전 : 3.21

1. gblist.skin.php의 조회 select 박스에 "전체" 추가
  수정전 :
    <select name=sselect class=select>
        <option value='wr_subject|wr_content'>제목+내용</option>
  수정후 :
      <select name=sselect class=select>
        <option value='wr_subject|wr_content|wr_name|wr_num|wr_datetime'>전체</option>
        <option value='wr_subject|wr_content'>제목+내용</option>

2. lib/gnuboard.lib.php에 전체에 대한 SQL 조회조건 설정
  수정전 :
        switch ($field) {
            case "wr_subject|wr_content" :
           
  수정후 :
          switch ($field) {
            case "wr_subject|wr_content|wr_name|wr_num|wr_datetime" :
                $str .= " (wr_subject like '%$s[$i]%'
                        or wr_content like '%$s[$i]%'
                        or wr_name like '%$s[$i]%'
                        or wr_num like '%$s[$i]%'
                        or wr_datetime like '%$s[$i]%') ";
                break;
            case "wr_subject|wr_content" :

ps : 전체에서 읽음,추천,비추천은 포함하지 않았습니다.
      전체검색시 조회되는 항목은 제목,내용,이름,번호,날짜 입니다.
추천
1
  • 복사

댓글 전체

모처럼 밤새서 그런가 .... 이런~ 루트님 괜히 번거롭게 해 드렸네요.
제가 실수로 덮어 쒸운걸 가지고 .... 어쩐지 이상하다 했습니다.
게시판 위에 인기검색어 하고 엉키더라구요. 계속 테스트 해 보았는데 ....
루트님이 조언해 주신게 딱 들어 맞네요. 번거롭게 해 드려서 거듭 죄송
하다는 말씀을 드립니다. 하나가 되면 하나가 안되고를 계속 반복 했습니다.
눈앞에 있는걸 삭제한걸 모르고 ....^^; 좋은 주말 보내세요!
막 테스트 끝냈습니다. 급하게 하시느냐고 테스트를 많이 못
해 보신듯 합니다. 2번 수정후 에서 올리신대로 하니 제목+내용
을 검색 못 하더군요. 아래처럼 case "wr_subject|wr_content" :
를 위로 끌어 올렸더니 잘 됩니다. 이용하실 분들 참고 하세요.

 수정후 :
        switch ($field) {
              case "wr_subject|wr_content" :    // break; 밑에 있던걸로 이동
              case "wr_subject|wr_content|wr_name|wr_num|wr_datetime" :
              $str .= " (wr_subject like '%$s[$i]%'
                      or wr_content like '%$s[$i]%'
                      or wr_name like '%$s[$i]%'
                      or wr_num like '%$s[$i]%'
                      or wr_datetime like '%$s[$i]%') ";
              break;
루트님 정말 감사합니다..  정말 며칠째 끙끙 대면 온 사이트를 뒤져가면서 해봤지만... 계속 실패만 해왔네요..
루트님 덕분에 모든게 해결이 되네요..  정말 눈물납니다.
어떻게 감사를 드려야 할지...

정말정말 감사합니다.
잘 됩니다. 루트님 홈에 글 남기도 재차 시도를 해 보았는데 ....^^;
gnusearch.php 에서만 헤메고 있었으니 ....^^ 될듯될듯 하다가 안 되더라구요.
아무튼 감사합니다. 조정영님이 무척 기뻐하실듯 합니다.

좋은꿈 꾸세요!
혹시나 해서 올립니다. 위팁을 적용한 lib/gnuboard.lib.php의 switch 문의 내용입니다.
        switch ($field) {
            case "wr_subject|wr_content|wr_name|wr_num|wr_datetime" :
                $str .= " (wr_subject like '%$s[$i]%'
                        or wr_content like '%$s[$i]%'
                        or wr_name like '%$s[$i]%'
                        or wr_num like '%$s[$i]%'
                        or wr_datetime like '%$s[$i]%') ";
                break;
            case "wr_subject|wr_content" :
                $str .= " (wr_subject like '%$s[$i]%' or wr_content like '%$s[$i]%') ";
                break;
            case "ca_id" :
                $str .= " ($field = '$s[$i]') ";
                break;
            case "wr_hit" :
            case "wr_good" :
            case "wr_nogood" :
                $str .= " ($field >= '$s[$i]') ";
                break;
            case "wr_num" :
                $str .= " ($field = ".((-1)*$s[$i]).") ";
                break;
            default :
                $str .= " ($field like '%$s[$i]%') ";
                break;
        }
위처럼 수정했을때 저는 잘되는데요.
다음 링크에서 "파이어버드"라는것을 "전체"와 "제목+내용"으로 검색해보세요. 잘 나옵니다.
http://threes.org/gnu3/index.php?doc=bbs/gnuboard.php&bo_table=test

위와 같이 처리하면 데이타 량이 많을 경우 조회 시간이 많이 늦어질수있습니다.

제가 작성한 2번의 경우는 기존 switch와 제목+내용의 검색조건 설정하는것 사이에, 전체검색을 위한 코드가 추가 된것입니다. 그리고 case와 case 사이에 break가 있어야 하구요.....
2번에 추가된 내역.
              case "wr_subject|wr_content|wr_name|wr_num|wr_datetime" :
              $str .= " (wr_subject like '%$s[$i]%'
                      or wr_content like '%$s[$i]%'
                      or wr_name like '%$s[$i]%'
                      or wr_num like '%$s[$i]%'
                      or wr_datetime like '%$s[$i]%') ";
              break;
© SIRSOFT
현재 페이지 제일 처음으로