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

검색 조건이 잘 걸리지 않아 질문드립니다 ㅠㅠ 채택완료

승슝 3년 전 조회 1,734

게시판에서 검색 조건을 날짜와 작성자 두가지 조건을 걸려고 합니다.

<조건>

1. 날짜만 검색했을 때 값 출력

2. 작성자만 검색했을 때 값 출력

3. 둘다 검색했을 때 값 출력

 

list.php에서 쿼리문을 추가하여 값을 받으려고 하는데

제가 검색조건을 걸어놓은 곳은 '시설관리인 경우'라고 적혀있는 곳입니다.

</p>

<p>$sop = strtolower($sop);</p>

<p>if ($sop != 'and' && $sop != 'or')</p>

<p>    $sop = 'and';</p>

<p> </p>

<p>// 분류 선택 또는 검색어가 있다면</p>

<p>$stx = trim($stx);</p>

<p>//검색인지 아닌지 구분하는 변수 초기화</p>

<p>$is_search_bbs = false;</p>

<p>   </p>

<p>if ($sca || $stx || $sfl === '0') {     //검색이면</p>

<p>    $is_search_bbs = true;      //검색구분변수 true 지정</p>

<p>   </p>

<p>    if($bo_table == "purchase_stock") { //약품구매게시판인경우</p>

<p>        $sql_search=" wr_1 between '{$stx}' and '{$stx2}' ";</p>

<p>        if ($stx3) {</p>

<p>            $sql_search += " and wr_subject like '%{$stx3}%' ";</p>

<p>        }</p>

<p>   <span style="background-color:#ffffff;"> }else if($bo_table == "facility_manage") { //시설관리인경우</span></p>

<p><span style="background-color:#ffffff;">            $sql_search=" wr_datetime between (wr_datetime LIKE '%{$stx}') and (wr_datetime LIKE '%{$stx2}') or wr_name LIKE '{$stx3}%' ";</span></p>

<p><span style="background-color:#ffffff;">    }</span></p>

<p> </p>

<p>    // 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)</p>

<p>    $sql = " select MIN(wr_num) as min_wr_num from {$write_table} ";</p>

<p>    $row = sql_fetch($sql);</p>

<p>    $min_spt = (int)$row['min_wr_num'];</p>

<p>    if (!$spt) $spt = $min_spt;</p>

<p> </p>

<p>    $sql_search .= " and (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) ";</p>

<p> </p>

<p>    // 원글만 얻는다. (코멘트의 내용도 검색하기 위함)</p>

<p>    // 라엘님 제안 코드로 대체 <a href="http://sir.kr/g5_bug/2922" target="_blank" rel="noopener noreferrer">http://sir.kr/g5_bug/2922</a></p>

<p>    $sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search} ";</p>

<p>    $row = sql_fetch($sql);</p>

<p>    $total_count = $row['cnt'];</p>

<p>

 

mysql 워크벤치에서 검색을 했을 때는 원하는대로 값이 잘 나오는데 페이지에서 검색을 하려고 하면 

작성자만 검색하려고 했을 때 최고관리자까지 같이 검색이 됩니다...

그리고 여기서 날짜 값을 추가로 조건 주면 원하는 조건 출력이 됩니다.

 

도대체 문제가 무엇인지 모르겠어 이렇게 질문 남깁니다... 제발 도와주세요...

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

답변 2개

채택된 답변
+20 포인트

제일 쉬운 방법이 

$row = sql_fetch($sql); 

여기 위에다가 

echo $sql; 찍고 확인해보세요

 

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

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

3년 전

감사합니다!

echo $stx, $sfl, $sca 다 찍어보았고 제가 추가로 설정한 변수 stx2, stx3값이 들어오지 않는 걸 알았습니다.

 

조건에 stx2, stx3를 추가하니 값이 잘 됩니다. 감사합니다!

 

</p>

<p>if ($sca || $stx || $sfl || $stx2 || $stx3 == '0') {     //검색이면</p>

<p> </p>

<p>    $is_search_bbs = true;      //검색구분변수 true 지정</p>

<p>   </p>

<p>    if($bo_table == "purchase_stock") { //약품구매게시판인경우</p>

<p>        $sql_search=" wr_1 between '{$stx}' and '{$stx2}' ";</p>

<p>        if ($stx3) {</p>

<p>            $sql_search += " and wr_subject like '%{$stx3}%' ";</p>

<p>        }</p>

<p>    }else if($bo_table == "purchase_feed"){//사료구매게시판인경우</p>

<p>        $sql_search=" wr_2 between '{$stx}' and '{$stx2}' and wr_subject like '%{$stx3}%' ";</p>

<p>    }else if($bo_table == "basic_information") { //CMS일반정보인경우</p>

<p>            $sql_search=" wr_datetime between '{$stx}' and date_add('{$stx2}',interval 1 day) and wr_name like '%{$stx3}%' ";</p>

<p>    }else if($bo_table == "facility_manage") { //CMS시설관리인경우</p>

<p>            $sql_search="  wr_datetime between (wr_datetime LIKE '%{$stx}') and (wr_datetime LIKE '%{$stx2}') OR wr_name LIKE '{$stx3}%'   ";</p>

<p>    }else if($bo_table == "growth_environment") { //CMS성육환경인경우</p>

<p>            $sql_search=" wr_datetime between '{$stx}' and date_add('{$stx2}',interval 1 day) and wr_name like '%{$stx3}%' ";</p>

<p>    }else if($bo_table == "growth_manage") { //CMS성육관리인경우</p>

<p>            $sql_search=" wr_datetime between '{$stx}' and date_add('{$stx2}',interval 1 day) and wr_name like '%{$stx3}%' ";</p>

<p>    }</p>

<p>

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

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

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

로그인