기간검색
본문
형님들 안녕하세요.
이제 다들 퇴근하셨겠습니다 ㅜㅜ
기간검색기능을 만들려고 해서요..
여기저기 스킨소스 떠다가 다중검색과 기간검색소스 조합해서
어찌어찌 만들었습니다..
헌대 다중검색이랑 기간검색이랑 따로노는데 이유는
$sop = strtolower($sop);
if ($sop != 'and' && $sop != 'or')
$sop = 'and';
// 분류 선택 또는 검색어가 있다면
$stx = trim($stx);
if ($sca || $stx || count($arr_search) > 0) {
$se_arr = array();
$se_arr = $arr_search;
$sql_search = get_sql_search3($sca, $sfl, $stx, $sop, $se_arr);
// 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
$sql = " select MIN(wr_num) as min_wr_num from {$write_table} ";
$row = sql_fetch($sql);
$min_spt = (int)$row['min_wr_num'];
if (!$spt) $spt = $min_spt;
$sql_search .= " and (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) ";
// 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
// 라엘님 제안 코드로 대체 http://sir.kr/g5_bug/2922
$sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search} ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
/*
$sql = " select distinct wr_parent from {$write_table} where {$sql_search} ";
$result = sql_query($sql);
$total_count = sql_num_rows($result);
*/
}
///////기간별검색////////////////t_start=20&t_end=25&x=25&y=9
else if ($t_start || $t_end)
{
$sql_search = "wr_1 >= '$t_start' && wr_1 <= '$t_end'";
// 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
$sql = " select MIN(wr_num) as min_wr_num from {$write_table} ";
$row = sql_fetch($sql);
$min_spt = (int)$row['min_wr_num'];
if (!$spt) $spt = $min_spt;
$sql_search .= " and (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) ";
// 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
$sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search} ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
}
이녀석들 때문인것 같네요.
else if 가 아니고 어차피 똑같은 소스면 if 로 묶어서 사용가능할꺼같은데
혹시 간단하게 도움 주실 고수님들 있으신지요..
저거 하나로합치면 다중검색에 기간검색까지도 가능할텐데 ㅜoㅜ
도움 부탁드립니다.
맛저녁하세요
꾸벅꾸벅
답변 1
1) else if ($t_start || $t_end) { } 부분 삭제
2) 기간별 검색 부분을 위 if ()문 내로 이동/결합
$sql_search = get_sql_search3($sca, $sfl, $stx, $sop, $se_arr);
// 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
->
$sql_search = get_sql_search3($sca, $sfl, $stx, $sop, $se_arr);
if ($t_start || $t_end)
$sql_search .= " and wr_1 >= '$t_start' && wr_1 <= '$t_end'";
// 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)