테스트 사이트 - 개발 중인 베타 버전입니다

기간검색 채택완료

퍼블리규 5년 전 조회 3,600

형님들 안녕하세요.

이제 다들 퇴근하셨겠습니다 ㅜㅜ

 

기간검색기능을 만들려고 해서요..

여기저기 스킨소스 떠다가 다중검색과 기간검색소스 조합해서

어찌어찌 만들었습니다..

헌대 다중검색이랑 기간검색이랑 따로노는데 이유는

 

$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개

채택된 답변
+20 포인트
5년 전

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'"; // 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)    

로그인 후 평가할 수 있습니다

답변에 대한 댓글 4개

퍼블리규
5년 전
$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);
if ($t_start || $t_end)
$sql_search .= " and 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']})) ";

// 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
// 라엘님 제안 코드로 대체 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'];



}

이렇게 하면 될까요?

if ($sca || $stx || count($arr_search) > 0) {
$sql = " select distinct wr_parent from {$write_table} where {$sql_search} {$sql_order} limit {$from_record}, $page_rows ";
}

////////////기간별검색/////////////////
else if ($t_start || $t_end){
$sql = " select distinct wr_parent from {$write_table} where {$sql_search} {$sql_order} limit {$from_record}, $page_rows ";

}
///////////////////////////////




// 검색일 경우 wr_id만 얻었으므로 다시 한행을 얻는다
if ($sca || $stx || count($arr_search) > 0)
$row = sql_fetch(" select * from {$write_table} where wr_id = '{$row['wr_parent']}' ");

//////////기간별검색////////////////////
if ($t_start || $t_end)
$row = sql_fetch(" select * from $write_table where wr_id = '$row[wr_parent]' ");

////////////////////////////////////////


이 두부분은 어떻게 해야할까요?ㅜㅜ
퍼블리규
5년 전
if ($sca || $stx || count($arr_search) > 0)

if ($t_start || $t_end)

이 두개를 합칠 방법은 없나요?? 한라인으로 쓸수있는 방법은...
마르스컴퍼니
5년 전
if ($sca || $stx || $t_start || $t_end || count($arr_search) > 0) {


$se_arr = array();
$se_arr = $arr_search;

if ($sca || $stx || count($arr_search) > 0)
$sql_search = get_sql_search3($sca, $sfl, $stx, $sop, $se_arr);

if ($t_start || $t_end) {
if ($sql_search)
$sql_search .= " and wr_1 >= '$t_start' && wr_1 <= '$t_end'";
else
$sql_search = " wr_1 >= '$t_start' && wr_1 <= '$t_end'";
}
퍼블리규
5년 전
마르스컴퍼니님 감사합니다..ㅜㅜ
덕분에 3일동안 꾸역꾸역 고생하던게 한순간에 해결이 되었습니다.ㅜㅜ
정말 진심으로 감사합니다 ㅜㅜ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인