게시판 검색 기능에 [전체] 조회 기능 부여하기
** 다음 내용중 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 : 전체에서 읽음,추천,비추천은 포함하지 않았습니다.
전체검색시 조회되는 항목은 제목,내용,이름,번호,날짜 입니다.
** 개발 및 테스트 버전 : 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 : 전체에서 읽음,추천,비추천은 포함하지 않았습니다.
전체검색시 조회되는 항목은 제목,내용,이름,번호,날짜 입니다.
|
댓글을 작성하시려면 로그인이 필요합니다.
로그인
댓글 7개
제가 실수로 덮어 쒸운걸 가지고 .... 어쩐지 이상하다 했습니다.
게시판 위에 인기검색어 하고 엉키더라구요. 계속 테스트 해 보았는데 ....
루트님이 조언해 주신게 딱 들어 맞네요. 번거롭게 해 드려서 거듭 죄송
하다는 말씀을 드립니다. 하나가 되면 하나가 안되고를 계속 반복 했습니다.
눈앞에 있는걸 삭제한걸 모르고 ....^^; 좋은 주말 보내세요!
우찌 이런걸 만드나요..
하하 멋지네요..
해 보신듯 합니다. 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 에서만 헤메고 있었으니 ....^^ 될듯될듯 하다가 안 되더라구요.
아무튼 감사합니다. 조정영님이 무척 기뻐하실듯 합니다.
좋은꿈 꾸세요!
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;