게시판 검색 기능에 [전체] 조회 기능 부여하기 정보
그누호환 게시판 검색 기능에 [전체] 조회 기능 부여하기본문
** 다음 내용중 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 : 전체에서 읽음,추천,비추천은 포함하지 않았습니다.
전체검색시 조회되는 항목은 제목,내용,이름,번호,날짜 입니다.
추천
1
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;
해 보신듯 합니다. 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 에서만 헤메고 있었으니 ....^^ 될듯될듯 하다가 안 되더라구요.
아무튼 감사합니다. 조정영님이 무척 기뻐하실듯 합니다.
좋은꿈 꾸세요!
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;
}
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;
다음 링크에서 "파이어버드"라는것을 "전체"와 "제목+내용"으로 검색해보세요. 잘 나옵니다.
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;