게시판 검색 형식 추가 방법즘.[1만포인트] > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

게시판 검색 형식 추가 방법즘.[1만포인트] 정보

게시판 검색 형식 추가 방법즘.[1만포인트]

본문

기존방식
&sfl=검색필드&stx=검색문장
이렇게 되어있는데요.

&no=wr_4를 추가해서

&sfl=검색필드&stx=검색문장&no=wr_4
이렇게 검색되게하고
검색필드에 검색문장이 포함되고 wr_4가  '' 와 같은것만 출력하려고 합니다.
bbs/list.php , lib/common.lib.php 어디에도 삽입할곳이 안보이네요.
어떤 파일에 어떤식으로 추가 하면될까요?
  • 복사

댓글 전체

저의 경우에는 아래와 같이 bbs/list.php 에 조건을 추가하고 쿼리문에 추가하는 방식으로 여분필드를
검사합니다^^


###bbs 의 list.php 에서 아래와 같이 조건을 준 후, 쿼리문에 추가함

############################################################################################
$mr_where = ""; //mrsin 조건문

if($mr_search) {
$mr_where .= " and wr_1 = '$_GET[wr_1]' "; //wr_1 필드와 wr_2 필드의 조건을 검색한다
### 대부분의 select 쿼리에 $mr_where 의 변수를 where 절 아래 추가한다
}
############################################################################################

$bo_table 조건을 주어도 되고 안줘도 관계는 없으나, 주는 것이 좋겠지요?

감사합니다^^
저의 경우
// 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
    $sql = " select MIN(wr_num) as min_wr_num from $write_table ";
    $row = sql_fetch($sql);
    $min_spt = $row[min_wr_num];

    if (!$spt) $spt = $min_spt;

    $sql_search .= " and (wr_num between '".$spt."' and '".($spt + $config[cf_search_part])."') ";
   
    if($no){
    $null =  "and ".$no." = null";
    }
   
    // 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
    $sql = " select distinct wr_parent from $write_table where $sql_search $null ";
    $result = sql_query($sql);
    $total_count = mysql_num_rows($result);
}

이런식으로 소스에 추가 해보았는데 작동이 안되서요^^
아~ 저의 경우에는 소스를 건드리지 않고 skin 에서 페이징 방식을 바꿔 버립니다 ~_~

$write_pages = get_paging($config[cf_write_pages], $page, $total_page, "./board.php?bo_table=$bo_table".$qstr."&wr_1=$wr_1&wr_2=$wr=2&page=");

잠깐 ㅡㅡ;; 이게 맞나 ㅡㅡ;;; 또 딴소리 하는 거 같네요 ㅠㅠㅠㅠㅠㅠ
MySQL의 경우 is 를 붙여야하는걸껍니다^^

and 필드명 is NULL (자료가없을경우)
and 필드명 is not NULL (없는경우가 아닌경우 - 이경우는 데이터가 있거나 ''으로 임의공백준것까지를 말합니다)
bo_table=kira&sfl=wr_3&stx=1&no=wr_4


bbs/list.php
줄수 30아래 추가/수정
if($no){
    $null =  "and ".$no." is null";
    }

    // 원글만 얻는다. (코멘트의 내용도 검색하기 위함) // 수정
    $sql = " select distinct wr_parent from $write_table where $sql_search $null";

이렇게 해도 안되는데 다른 부분일가요?
wr_4가 null아닌거와 맞는거 전부 뿌려지네요 ㅡㅡ;;
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

if($no){
    $null =  "where ".$no." is NULL";
    }


// 분류 사용 여부
$is_category = false;
if ($board[bo_use_category])
{
    $is_category = true;
    $category_location = "./board.php?bo_table=$bo_table&sca=";
    $category_option = get_category_option($bo_table); // SELECT OPTION 태그로 넘겨받음
}

$sop = strtolower($sop);
if ($sop != "and" && $sop != "or")
    $sop = "and";

// 분류 선택 또는 검색어가 있다면
$stx = trim($stx);
if ($sca || $stx)
{
    $sql_search = get_sql_search($sca, $sfl, $stx, $sop);

    // 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
    $sql = " select MIN(wr_num) as min_wr_num from $write_table $null";


이렇게 위치 변경하니 되네요 ㅡㅡ;;;
bbs/list.php
30줄 아래 추가 수정으로 대체 됬습니다.
// 제외 필드 추가 2011-01-13
if($no){
    $null .= "and {$no} = ''";
    }

    $sql_search .= " and (wr_num between '".$spt."' and '".($spt + $config[cf_search_part])."') $null"; // $null 추가 2011-01-13

is null일경우 아무것도 안뜨더라구요.
소스 따라 가보니
업데이트에서 wr_4가 ''로 되어 있더라구요.
업데이트시 null이라고 안주면 위처럼 써야 하네요.
© SIRSOFT
현재 페이지 제일 처음으로