검색 조건 질문입니다. > 그누4 질문답변

그누4 질문답변

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

검색 조건 질문입니다. 정보

검색 조건 질문입니다.

본문

안녕하세요. ^^

검색조건을 연구하고 있는데요...

원본 소스는 이렇습니다. (아.. 지블로그 검색소스 입니다. ^^)


<!-- 블로그 검색 시작 -->
<form method=get action='<?=$PHP_SELF?>'>
<select name=st>
<option value='blog_name|writer' <?if ($st == 'blog_name|writer') echo 'selected'?>> 블로그+필명 </option>
<option value='blog_name' <?if ($st == 'blog_name') echo 'selected'?>> 블로그 </option>
<option value='writer' <?if ($st == 'writer') echo 'selected'?>> 필명 </option>
<option value='title|content' <?if ($st == 'title|content') echo 'selected'?>> 제목+내용 </option>
<option value='title' <?if ($st == 'title') echo 'selected'?>> 제목 </option>
<option value='content' <?if ($st == 'content') echo 'selected'?>> 내용 </option>
</select>
<input type=text name=sv size=20 value="<?=$sv?>">
<input type=submit value="검색">
</form>
<!-- 블로그 검색 종료 -->


이 소스에서.. select 박스를 없애고자..  hidden 처리를 하였는데요..
다음과 같습니다.

<form method=get action='<?=$PHP_SELF?>'>
<input type=hidden name=st value='blog_name|writer' <?if ($st == 'blog_name|writer')?>>
<input type=hidden name=st value='blog_name' <?if ($st == 'blog_name')?>>
<input type=hidden name=st value='writer' <?if ($st == 'writer')?>>
<input type=hidden name=st value='title|content' <?if ($st == 'title|content')?>>
<input type=hidden name=st value='title' <?if ($st == 'title')?>>
<input type=hidden name=st value='content' <?if ($st == 'content')?>>
<input name=sv style="border:#fbc73c 4px solid; height:32px; width:200px; padding:5px 0 0 7px; background-color:#fff; font-size:14px; font-family:돋움, Dotum; font-weight:bold; margin:5px 0 0px 2px;" value='<?=stripslashes($stx)?>'>
<input type=submit value="검색" style="border:0; background-color:#fbc73c; width:50px; height:32px; color:#ffffff; font-size:13px; font-family:dotum; font-weight:bold;">
</form>

이런식으로 변경하였는데..
내용 검색만 되네요.. 아무리해도 안됩니다. ㅠㅠ name= 여기서 st  를 sfl sc 뭐 등등
해봤는데도 안되네요..

그래서 이렇게 질문까지 올립니다.
제목, 글쓴이, 내용 이렇게 3가지만 검색되면 되거든요.. ㅠㅠ
or,and 이런 중복 검색도 필요없습니다. ^^

조언부탁드려요 ^^

댓글 전체

지블로그라 잠깐 살펴보았습니다만..
gblog/blog.lib.php 에서 get_blog_main 함수를 살펴보면.

if ($st && $sv)  {
        switch ($st) {
            case 'blog_name':
            case 'writer':
            case 'blog_name|writer':
            case 'title':
            case 'content':
            case 'title|content':
                $is_search = true; break;
            default:
                $is_search = false;
        }

        if ($is_search) {
            if(strstr($st, '|')) {
                $arr = explode('|', $st);
                $sql_search = " and (".$arr[0]." LIKE '%$sv%' ";
                for ($i=1; $i<count($arr); $i++) {
                    $sql_search .= " or ".$arr[$i]." LIKE '%$sv%' ";
                }
                $sql_search .= ")";
            } else {
                $sql_search = " and $st LIKE '%$sv%' ";
            }
        }
    }

blog_name|writer 두가지이상으로 검색을 할수 있다는것을 알수 있습니다.

글쓴이, 제목, 내용이라면 writer|title|content 가 되겠네요
선택이아닌 히든으로 원하셨으니..

<form method=get action='<?=$PHP_SELF?>'>
<input type=hidden name=st value='writer|title|content' <?if ($st == 'writer|title|content')?>>
<input name=sv style="border:#fbc73c 4px solid; height:32px; width:200px; padding:5px 0 0 7px; background-color:#fff; font-size:14px; font-family:돋움, Dotum; font-weight:bold; margin:5px 0 0px 2px;" value='<?=stripslashes($stx)?>'>
<input type=submit value="검색" style="border:0; background-color:#fbc73c; width:50px; height:32px; color:#ffffff; font-size:13px; font-family:dotum; font-weight:bold;">
</form>

이면되지않을까 싶습니다.
답변감사합니다. ^^ 저때문에 일부러 찾아보주시고 감사합니다~
그런데, ㅠㅠ 반영하고 검색을 했더니, 모든글이 검색이 되네요~~ ㅠㅠ

그래도~!! 위에 2가지 이상의 검색조건으로 된다는것을 조언주셔서..

<form method=get action='<?=$PHP_SELF?>'>
<input type=hidden name=st value='blog_name|writer' <?if ($st == 'blog_name|writer')?>>
<input type=hidden name=st value='title|content' <?if ($st == 'title|content')?>>
<input name=sv style="border:#fbc73c 4px solid; height:32px; width:200px; padding:5px 0 0 7px; background-color:#fff; font-size:14px; font-family:돋움, Dotum; font-weight:bold; margin:5px 0 0px 2px;" value='<?=stripslashes($stx)?>'>
<input type=submit value="검색" style="border:0; background-color:#fbc73c; width:50px; height:32px; color:#ffffff; font-size:13px; font-family:dotum; font-weight:bold;">
</form>

이렇게 했더니.. 이제 제목과 내용 검색이 가능하게 됐습니다. ^^
blog_name|writer 요것이 검색이 되질 않네요...
왜 작성자 검색이 안되는지 의문입니다. ㅋ
빠진게 있었습니다..

수정전
        switch ($st) {
            case 'blog_name':
            case 'writer':
            case 'blog_name|writer':
            case 'title':
            case 'content':
            case 'title|content':
                $is_search = true; break;
            default:
                $is_search = false;
        }
수정후

        switch ($st) {
            case 'blog_name':
            case 'writer':
            case 'blog_name|writer':
            case 'title':
            case 'content':
            case 'writer|title|content':
                $is_search = true; break;
            case 'title|content':
                $is_search = true; break;
            default:
                $is_search = false;
        }


<case 'writer|title|content':> 이넘아 추가해주셔야합니다. ^^;;
전체 66,558 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT