본문
부족전쟁스킨을 만들다 보니, 제목에 유저명을 넣었는데, 검색을 하려니 like 검색이 되어
너무 느리다.. 제목필드를 포기하기도 그렇고 소스에 일일이 다 = 검색을 넣기도 뭐할때..
검색필드명에 inx_???? 라고 지정하면 해당 필드는 = 검색이 되게 하자..
1. list.skin.php 의 검색부분 수정
<select name="sfl">
<option value="inx_wr_subject">유저아이디</option>
<option value="wr_subject">아이디검색</option>
<option value="wr_content">내용</option>
<option value="wr_subject||wr_content">제목+내용</option>
<option value="mb_id,1">회원아이디</option>
<option value="mb_id,0">회원아이디(코)</option>
<option value="wr_name,1">글쓴이</option>
<option value="wr_name,0">글쓴이(코)</option>
</select>
2. /lib/common.lib.php 에서 검색어 추출 부분 수정
function get_sql_search($search_ca_name, $search_field, $search_text, $search_operator='and')
-->
$op2 = "";
for ($k=0; $k<count($field); $k++) { // 필드의 수만큼 다중 필드 검색 가능 (필드1+필드2...)
$str .= $op2;
//echo $field[$k]."<BR>";
if (substr($field[$k],0,4)=="inx_") {
$str .= " ".substr($field[$k],4). "= '$s[$i]' ";
}
else {
switch ($field[$k]) {
case "mb_id" :
case "wr_name" :
$str .= " $field[$k] = '$s[$i]' ";
break;
case "wr_hit" :
case "wr_good" :
case "wr_nogood" :
$str .= " $field[$k] >= '$s[$i]' ";
break;
// 번호는 해당 검색어에 -1 을 곱함
case "wr_num" :
$str .= "$field[$k] = ".((-1)*$s[$i]);
break;
// LIKE 보다 INSTR 속도가 빠름
default :
if (preg_match("/[a-zA-Z]/", $search_str))
$str .= "INSTR(LOWER($field[$k]), LOWER('$search_str'))";
else
$str .= "INSTR($field[$k], '$search_str')";
break;
}
}
$op2 = " or ";
}
$str .= ")";
댓글목록
등록된 댓글이 없습니다.