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

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

호텔천사 5년 전 조회 4,182

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

 

그런데 문제는 

 

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

 

[테스트]

https://dongtan2go.com/">https://dongtan2go.com/

첫페이지에서

검색어: 보쌈

 

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

 

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

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

답변 4개

b
3년 전

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

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

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

호텔천사

모두 답변 감사합니다.

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

 

index.php 파일

<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></p>

<p>                <script>

                function fsearchbox_submit(f)

                {

                    if (f.stx.value.length < 2) {

                        alert("검색어는 두글자 이상 입력하십시오.");

                        f.stx.select();

                        f.stx.focus();

                        return false;

                    }</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>                    return true;

                }

                </script></p>

<p>            </fieldset>

                

            

        </div>

 

search.php 파일

</p>

<p>// 필드의 수만큼 다중 필드 검색 가능 (필드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;

            }</p>

<p>

 

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

답변에 대한 댓글 2개

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

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

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

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


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

좋은 하루 되세요.

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

플라이
5년 전

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

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

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

e
5년 전

/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개

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

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

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

로그인