전체검색 - 여분필드 입력분이 검색이 안됩니다.
본문
질문 그대로 첫페이지에 전체검색 부분이 있습니다.
그런데 문제는
여분필드를 이용해서 삽입한 내용이 검색이 안됩니다.
[테스트]
첫페이지에서
검색어: 보쌈
검색결과를 보면 여분필드로 삽입한 부분은 검색이 안되고 글쓰기 부분으로 입력한 부분만 검색이 됩니다.
원래 여분필드는 검색이 안되나요?
답변 4
/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;
}
저기는 여분필드가 wr_1을 썼을경우고요 해당 부분이 여분필드가 다른 필드라면 그에 맞춰 수정해서 반영해 주시면 됩니다.
모두 답변 감사합니다.
하라는대로 다 입력 한것 같은데 여전히 여분필드는 검색에서 안나오네요.
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>
<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 파일
// 필드의 수만큼 다중 필드 검색 가능 (필드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;
}
!-->!-->
저도 다 해봤는데 진짜 안되네요 ㅠㅠ 의뢰를 해야하나ㅠㅠ..