그누야 님의 다중 카테고리 사용시 게시판 검색 문제... > 그누4 질문답변

그누4 질문답변

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

그누야 님의 다중 카테고리 사용시 게시판 검색 문제... 정보

그누야 님의 다중 카테고리 사용시 게시판 검색 문제...

본문

그누야님의 다중카테고리 스킨을 수정하여 사용하고 있습니다.
다중 카테고리 사용시 common.lib 의 함수 가운데 쿼리 부분 때문인지
검색 결과가 나타나지 않습니다. 다중카테고리 적용 스킨과 일반 스킨 사용시 모두 검색이 되지 않았는데.. 일반 게시판 사용시 검색이 되도록 수정은 해봤습니다만..
다중 카테고리 사용 스킨부분은 검색이 제대로 안되는것 같습니다.
아래는 해당 함수의 코드 부분입니다..
----------------------------------------------------------------------------------------
// 검색 구문을 얻는다.
//function get_sql_search($search_ca_name, $search_field, $search_text, $search_operator=false)
function get_sql_search($search_ca_name, $search_field, $search_text, $search_operator='and')
{
       global $g4, $write_table, $bo_table;
     $str = "";
        $sql = " select bo_10 from $g4[board_table] where bo_table='$bo_table'";
        $row = sql_fetch($sql);
    if ($search_ca_name)
//        $sql = " select ca_id from $write_table";
// 여기 추가 했음 2006-03-02
        if(substr($row[bo_10],0,4)=="MCAT"){
   
   $str = " ca_id = '$search_ca_name'  "; 
  
  } else {
   
   $str = " ca_name = '$search_ca_name' ";
  
  }
    $search_text = trim($search_text);
    if (!$search_text)
        return $str;
    if ($str)
        $str .= " and ";
    // 쿼리의 속도를 높이기 위하여 ( ) 는 최소화 한다.
    $op1 = "";
    // 검색어를 구분자로 나눈다. 여기서는 공백
    $s = array();
    $s = explode(" ", trim($search_text));
    // 검색필드를 구분자로 나눈다. 여기서는 +
    $tmp = array();
    $tmp = explode(",", trim($search_field));
    $field = explode("||", $tmp[0]);
    $not_comment = $tmp[1];
    $str .= "(";
    for ($i=0; $i<count($s); $i++)
    {
        // 검색어
        $search_str = $s[$i];
        // 인기검색어
        $sql = " insert into $g4[popular_table]
                    set pp_word = '$search_str',
                        pp_date = '$g4[time_ymd]',
                        pp_ip = '$_SERVER[REMOTE_ADDR]' ";
        sql_query($sql, FALSE);
        $str .= $op1;
        $str .= "(";
        $op2 = "";
        for ($k=0; $k<count($field); $k++) { // 필드의 수만큼 다중 필드 검색 가능 (필드1+필드2...)
            $str .= $op2;
            switch ($field[$k]) {
                case "mb_id" :
                case "wr_name" :
                    $str .= " $field[$k] = '$s[$i]' ";
                    break;
                case "wr_hit" :
                case "wr_good" :
                case "wr_nogood" :
                    $str .= " $field[$k] >= '$s[$i]' ";
                    break;
                // 번호는 해당 검색어에 -1 을 곱함
                case "wr_num" :
                    $str .= "$field[$k] = ".((-1)*$s[$i]);
                    break;
                // LIKE 보다 INSTR 속도가 빠름
                default :
                    if (preg_match("/[a-zA-Z]/", $search_str))
                        $str .= "INSTR(LOWER($field[$k]), LOWER('$search_str'))";
                    else
                        $str .= "INSTR($field[$k], '$search_str')";
                    break;
            }
            $op2 = " or ";
        }
        $str .= ")";
        //$op1 = ($search_operator) ? ' and ' : ' or ';
        $op1 = " $search_operator ";
    }
    $str .= " ) ";
    if ($not_comment)
        $str .= " and wr_is_comment = '0' ";
    return $str;
}
---------------------------------------------------------------------------------------
아래는 bbs/list.php 의 리스트 및 검색 부분 소스코드 입니다.
---------------------------------------------------------------------------------------
if (!$sst)
{
    $sst  = "wr_num, wr_reply";
    $sod = "";
}
$sql_order = " order by $sst $sod ";
 
$board_c_sql = " select * from g4_board ";
$board_c_query =  sql_query($board_c_sql);
$board_c_array = mysql_fetch_array($board_c_query);
$bo_10 = $board_c_array[bo_10];
$bo_10 = substr( $bo_10 , 0, 4 );

if ($sca || $stx)
{
    $sql = " select distinct * from $write_table where $sql_search $sql_order limit $from_record, $board[bo_page_rows] ";

}
else {
 $sql = " select * from $write_table where wr_is_comment = 0 $sql_order limit $from_record, $board[bo_page_rows]";
}
 echo $str."<br>";
  • 복사

댓글 전체

© SIRSOFT
현재 페이지 제일 처음으로