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

그누보드 검색 기능 질문입니다. 채택완료

고재팬일본유학원장 2년 전 조회 2,604

그누보드 검색 기능에서 단어를 2개 밖에 못올리던데 더 많은 단어를 조합하기 위해 푸는 방법이 없을가요? 

 

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

답변 2개

채택된 답변
+20 포인트
복스리
2년 전

자바스크립트쪽도 작업을 해줘야하겠지만. php쪽도 봐주셔야하지 않을까 해서 안내드려봅니다.

/bbs/search.php 69라인쪽을 보시면

 

</p>

<p>    $search_query = 'sfl='.urlencode($sfl).'&stx='.urlencode($stx).'&sop='.$sop;</p>

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

    $field = explode('||', trim($sfl));</p>

<p>    $str = '(';

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

        if (trim($s[$i]) == '') continue;</p>

<p>        $search_str = $s[$i];</p>

<p>        // 인기검색어

        insert_popular($field, $search_str);</p>

<p>        $str .= $op1;

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

<p>        $op2 = '';

        // 필드의 수만큼 다중 필드 검색 가능 (필드1+필드2...)

        for ($k=0; $k<count($field); $k++) {

            $str .= $op2;

            switch ($field[$k]) {

                case 'mb_id' :

                case 'wr_name' :

                    $str .= "$field[$k] = '$s[$i]'";

                    break;

                case 'wr_subject' :

                case 'wr_content' :

                    if (preg_match("/[a-zA-Z]/", $search_str))

                        $str .= "INSTR(LOWER({$field[$k]}), LOWER('{$search_str}'))";

                    else

                        $str .= "INSTR({$field[$k]}, '{$search_str}')";

                    break;

                default :

                    $str .= "1=0"; // 항상 거짓

                    break;

            }

            $op2 = " or ";

        }

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

<p>        $op1 = " {$sop} ";

    }

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

<p>

 

요렇게 되어있을겁니다. $field 값이 조건이니 이부분에 맞게 case별로 추가해서 변경해보시면 더 효율적인 검색이 될듯생각됩니다.

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

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

</p>

<p>var cnt = 0;

for (var i=0; i<f.stx.value.length; i++) {

    if (f.stx.value.charAt(i) == ' ')

        cnt++;

}</p>

<p>if (cnt > 1) {

    alert("빠른 검색을 위하여 검색어에 공백은 한개만 입력할 수 있습니다.");

    f.stx.select();

    f.stx.focus();

    return false;

}</p>

<p>

 

위의 자바스크립트에서 if (cnt > 1) { 이 부분을 변경하면 됩니다.

1보다 큰수를 넣으면 될 것입니다.

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

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

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

로그인