검색 조건 질문입니다. 정보
검색 조건 질문입니다.본문
안녕하세요. ^^
검색조건을 연구하고 있는데요...
원본 소스는 이렇습니다. (아.. 지블로그 검색소스 입니다. ^^)
<!-- 블로그 검색 시작 -->
<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 이런 중복 검색도 필요없습니다. ^^
조언부탁드려요 ^^
검색조건을 연구하고 있는데요...
원본 소스는 이렇습니다. (아.. 지블로그 검색소스 입니다. ^^)
<!-- 블로그 검색 시작 -->
<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>
이면되지않을까 싶습니다.
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 요것이 검색이 되질 않네요...
왜 작성자 검색이 안되는지 의문입니다. ㅋ
그런데, ㅠㅠ 반영하고 검색을 했더니, 모든글이 검색이 되네요~~ ㅠㅠ
그래도~!! 위에 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':> 이넘아 추가해주셔야합니다. ^^;;
수정전
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':> 이넘아 추가해주셔야합니다. ^^;;
정말 감사합니다. ^^ 아주아주 잘됩니다. 감사합니다.