전체검색 - 여분필드 입력분이 검색이 안됩니다. 채택완료

질문 그대로 첫페이지에 전체검색 부분이 있습니다.

 

그런데 문제는 

 

여분필드를 이용해서 삽입한 내용이 검색이 안됩니다.

 

[테스트]

https://dongtan2go.com/

첫페이지에서

검색어: 보쌈

 

검색결과를 보면 여분필드로 삽입한 부분은 검색이 안되고 글쓰기 부분으로 입력한 부분만 검색이 됩니다.

 

원래 여분필드는 검색이 안되나요?

답변 4개

저도 다 해봤는데 진짜 안되네요 ㅠㅠ 의뢰를 해야하나ㅠㅠ..

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

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

모두 답변 감사합니다.

하라는대로 다 입력 한것 같은데 여전히 여분필드는 검색에서 안나오네요.

 

index.php 파일

Copy
<div class="hd_sch_wr">
            <fieldset id="hd_sch" >
                <legend>사이트 내 전체검색</legend>
                <form name="fsearchbox" method="get" action="<?php echo G5_BBS_URL ?>/search.php" onsubmit="return fsearchbox_submit(this);">
                <input type="hidden" name="sfl" value="wr_subject||wr_content||wr_1||wr_2||wr_3||wr_4||wr_5">
                <input type="hidden" name="sop" value="and">
                <label for="sch_stx" class="sound_only">검색어 필수</label>
                <input type="text" name="stx" id="sch_stx" maxlength="20" placeholder="검색어를 입력해주세요">
                <button type="submit" id="sch_submit" value="검색"><i class="fa fa-search" aria-hidden="true"></i><span class="sound_only">검색</span></button>
                </form>

                <script>
                function fsearchbox_submit(f)
                {
                    if (f.stx.value.length < 2) {
                        alert("검색어는 두글자 이상 입력하십시오.");
                        f.stx.select();
                        f.stx.focus();
                        return false;
                    }

                    // 검색에 많은 부하가 걸리는 경우 이 주석을 제거하세요.
                    var cnt = 0;
                    for (var i=0; i<f.stx.value.length; i++) {
                        if (f.stx.value.charAt(i) == ' ')
                            cnt++;
                    }

                    if (cnt > 1) {
                        alert("빠른 검색을 위하여 검색어에 공백은 한개만 입력할 수 있습니다.");
                        f.stx.select();
                        f.stx.focus();
                        return false;
                    }

                    return true;
                }
                </script>

            </fieldset>
                
            
        </div>

 

search.php 파일

Copy
// 필드의 수만큼 다중 필드 검색 가능 (필드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' :
                case 'wr_1' : //wr_1 추가함 20200504
                case 'wr_2' : //wr_2 추가함 20200504
                case 'wr_3' : //wr_3 추가함 20200504
                case 'wr_4' : //wr_4 추가함 20200504
                case 'wr_5' : //wr_5 추가함 20200504
                    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;
            }

 

833227679_1588561846.0123.jpg

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

답변에 대한 댓글 2개

그대로 하시면 검색이 될텐데요??
혹시 검색에서 여분필드 내용이 안나온다고 하시는 거면..

bbs\search.php 파일에서..
$list[$idx][$i]['wr_1'] = $row['wr_1']; 추가해주고..

skin\search\basic\search.skin.php 파일에..
<?php echo $list[$idx][$i][wr_1'] ?> 등도 추가해줘야 합니다.
안녕하세요. 의견 감사합니다.

dongtan2go.com 첫페이지에 보면 전체검색을 할수 있게 넣었습니다.
- 검색을 하면 전체검색은 잘 됩니다.
- 하지만 여분필드로 추가 해서 넣은 부분은 검색을 못하는 것입니다.


알려주신 소스는 어디에 넣어야 할까요?

좋은 하루 되세요.

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

저기는 여분필드가 wr_1을 썼을경우고요 해당 부분이 여분필드가 다른 필드라면 그에 맞춰 수정해서 반영해 주시면 됩니다.

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

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

/bbs/search.php 파일에 아래 부분을 수정해줘야 합니다.

            switch ($field[$k]) {

                case 'mb_id' :

                case 'wr_name' :

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

                    break;

                case 'wr_subject' :

                case 'wr_content' :

                case 'wr_1' :

                    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;

            }

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

답변에 대한 댓글 2개

답변 감사합니다. 그런데 작동이 안하네요. 조금만 더 부탁드려도 될까요?
여분필드가 wr_1 인 경우 입니다.
다른 필드인 경우 해당 필드를 추가해줘야 합니다.

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

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

로그인
🐛 버그신고