검색하면 글 번호가 마이너스가 됩니다
관련링크
본문
다중검색의 lip 파일인데요..
검색하면 글 번호가 마이너스가 됩니다...
게시글 카운트도 0으로 표시되고요..
카운트가 0이라 그런지 페이징도 사라지네요.....
어디가 문제일까요..
검색하다보니 wr_num을 쓰면 카운트가 마이너스가 되는 경우가 있다고해서
wr_id로 바꿔도... 제대로 못바꾼건지 안되네요..
맨위 관련링크의 skin.lib.php (18.2K) 파일의 일부입니다...
function get_sql_search3($search_ca_name, $search_field, $search_text, $search_operator='and',$search_arr='')
{
global $g4;
$str = "";
if ($search_ca_name)
$str = " ca_name = '$search_ca_name' ";
$search_text = trim($search_text);
if (!$search_text && !$search_arr)
return $str;
if(count($search_arr[name]) > 0){
$se_flag = 0;
for($j = 0; $j < count($search_arr[name]); $j++){
if(is_array($search_arr[val][$j])){
$str2 = "";
for($x = 0; $x < count($search_arr[val][$j]);$x++){
$str2 = append_sql2($str2, " or ", " {$search_arr[name][$j]} like '%{$search_arr[val][$j][$x]}%' ");
}
$str2 = " (".$str2.") ";
$str = append_sql2($str, " and", $str2);
}else if(strlen($search_arr[val][$j]) > 0 && $search_arr[val][$j] ){
$str = append_sql2($str, " and ", " {$search_arr[name][$j]} like '%{$search_arr[val][$j]}%' ");
}
}
}
// 쿼리의 속도를 높이기 위하여 ( ) 는 최소화 한다.
$op1 = "";
// 검색어를 구분자로 나눈다. 여기서는 공백
$s = array();
$s = explode(" ", $search_text);
if(count($s) > 0 && strlen($s[0]) > 0 ){
if ($str)
$str .= " and ";
// 검색필드를 구분자로 나눈다. 여기서는 +
//$field = array();
//$field = explode("||", trim($search_field));
$tmp = array();
$tmp = explode(",", trim($search_field));
$field = explode("||", $tmp[0]);
$not_comment = $tmp[1];
$str .= "(";
for ($i=0; $i<count($s); $i++) {
// 검색어
$search_str = trim($s[$i]);
if ($search_str == "") continue;
// 인기검색어
/*
$sql = " insert into $g4[popular_table] set pp_word = '$search_str', pp_date = '$g4[time_ymd]', pp_ip = '$_SERVER[REMOTE_ADDR]' ";
sql_query($sql, FALSE);
*/
if(count($field) > 0){
$str .= $op1;
$str .= "(";
$op2 = "";
for ($k=0; $k<count($field); $k++) { // 필드의 수만큼 다중 필드 검색 가능 (필드1+필드2...)
$str .= $op2;
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;
case "wr_5" :
case "wr_6" :
$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 .= ")";
}
//$op1 = ($search_operator) ? ' and ' : ' or ';
$op1 = " $search_operator ";
}
$str .= " ) ";
}
if ($not_comment){
$str .= " and wr_is_comment = '0' ";
}
return $str;
}
function append_sql2($sql, $appender, $text) {
if(strlen($sql) > 0) {
$sql = $sql.$appender.$text;
} else {
$sql = $text;
}
return $sql;
}
$arr_search = array();
for($j = 0; $j < 10; $j++){
if(($_GET["wr_".$j] > 0 ) || is_array($_GET["wr_".$j])) {
$arr_search[name][] = "wr_".$j;
$arr_search[val][] = $_GET["wr_".$j];
}
}
답변 1
게시글을 쓸때 wr_num 이 제대로 저장이 안됬네요..
일단 게시글 정리해서 되는지 확인하시고
게시글 저장시 wr_num 관련 쿼리가 제대로 동작하는지 확인하셔야 겠네요
답변을 작성하시기 전에 로그인 해주세요.