테스트 사이트 - 개발 중인 베타 버전입니다

검색하면 글 번호가 마이너스가 됩니다 채택완료

토치 7년 전 조회 2,466

다중검색의 lip 파일인데요..

 

      

 

검색하면 글 번호가 마이너스가 됩니다...

게시글 카운트도 0으로 표시되고요..

카운트가 0이라 그런지 페이징도 사라지네요.....

어디가 문제일까요..

 

검색하다보니 wr_num을 쓰면 카운트가 마이너스가 되는 경우가 있다고해서

wr_id로 바꿔도... 제대로 못바꾼건지 안되네요..

 

맨위 관련링크의 https://sir.kr/g5_tip/3003?sfl=wr_subject%7C%7Cwr_content&stx=%EB%8B%A4%EC%A4%91#" onclick="file_download('//sir.kr/bbs/download.php?bo_table=g5_tip&wr_id=3003&no=1&sfl=wr_subject%7C%7Cwr_content&stx=%EB%8B%A4%EC%A4%91', 'skin.lib.php');" title="">skin.lib.php (18.2K)  파일의 일부입니다...

</p>

<p>function get_sql_search3($search_ca_name, $search_field, $search_text, $search_operator='and',$search_arr='')

{

    global $g4;</p>

<p>    $str = "";

        

    if ($search_ca_name)

        $str = " ca_name = '$search_ca_name' ";</p>

<p>    $search_text = trim($search_text);</p>

<p>    if (!$search_text && !$search_arr)

        return $str;

        if(count($search_arr[name]) > 0){

            $se_flag = 0;

            for($j = 0; $j < count($search_arr[name]); $j++){

                if(is_array($search_arr[val][$j])){

                    $str2 = "";</p>

<p>                    for($x = 0; $x < count($search_arr[val][$j]);$x++){

                        $str2 = append_sql2($str2, " or ", " {$search_arr[name][$j]} like '%{$search_arr[val][$j][$x]}%' ");

                    }

                    $str2 = " (".$str2.") ";

                    $str = append_sql2($str, " and", $str2);</p>

<p>

                }else if(strlen($search_arr[val][$j]) > 0 && $search_arr[val][$j] ){</p>

<p>

                            $str = append_sql2($str, " and ", " {$search_arr[name][$j]}  like '%{$search_arr[val][$j]}%' ");

                        

                    

                }

            }

        }

        </p>

<p>

    // 쿼리의 속도를 높이기 위하여 ( ) 는 최소화 한다.

    $op1 = "";</p>

<p>    // 검색어를 구분자로 나눈다. 여기서는 공백

    $s = array();</p>

<p>    $s = explode(" ", $search_text);

        if(count($s) > 0 && strlen($s[0]) > 0 ){</p>

<p>            if ($str)

        $str .= " and ";

    // 검색필드를 구분자로 나눈다. 여기서는 +

    //$field = array();

    //$field = explode("||", trim($search_field));

    $tmp = array();

    $tmp = explode(",", trim($search_field));

    $field = explode("||", $tmp[0]);

    $not_comment = $tmp[1];</p>

<p>    $str .= "(";

    for ($i=0; $i<count($s); $i++) {

        // 검색어

        $search_str = trim($s[$i]);

        if ($search_str == "") continue;</p>

<p>        // 인기검색어

                /*

        $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);

                */

                if(count($field) > 0){

        $str .= $op1;

        $str .= "(";</p>

<p>        $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;

                                case "wr_5" :

                                case "wr_6" :

                    $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 ";

    }</p>

<p>    $str .= " ) ";

        }

    if ($not_comment){

        $str .= " and wr_is_comment = '0' ";

        }

    

    return $str;

}</p>

<p>function append_sql2($sql, $appender, $text) {

    if(strlen($sql) > 0) {

        $sql = $sql.$appender.$text;

    } else {

        $sql = $text;

    }

    return $sql;

}</p>

<p>

$arr_search = array();

for($j = 0; $j < 10; $j++){

    if(($_GET["wr_".$j] > 0 ) || is_array($_GET["wr_".$j])) {

        $arr_search[name][] = "wr_".$j;

        $arr_search[val][] = $_GET["wr_".$j];

    }

}</p>

<p>

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
7년 전

게시글을 쓸때 wr_num 이 제대로 저장이 안됬네요..

일단 게시글 정리해서 되는지 확인하시고

게시글 저장시 wr_num 관련 쿼리가 제대로 동작하는지 확인하셔야 겠네요

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인