숫자 구간검색 도와주세요.
본문
text1 |
~
text2 |
text1과 text2사이의 구간검색을 하려고 합니다.
wr_1의 데이터를 검색하려고 하고 데이터는 숫자로 되어있습니다.
//여분필드검색
if($fp && $tp) {
$sql_search .= " and wr_1 between '".$fp."' and '".$tp."' ";
}
//텍스트박스
<input type="text" name="fp" id="fp" class="width80" value="<?php echo $fp; ?>" />
~
<input type="text" name="tp" id="tp" class="width80" value="<?php echo $tp; ?>" />
이렇게 되어있는데 검색이 안됩니다.
왜 안되는건지 알고 싶습니다.
도와주세요.
!-->답변 3
같은 값, 예를 들어 wr_1 BETWEEN 1 AND 1 검색이면 wr_1=1 조건과 다를 바 없겠죠?
그러니 범위값을 따로 받아야 합니다.
<input type="text" name="fp1" id="fp1" class="width80" value="<?php echo $fp; ?>" />
~
<input type="text" name="tp2" id="tp2" class="width80" value="<?php echo $tp; ?>" />
그누보드에서 $fp1, $fp2 변수 바로 할당해주는지 모르겠군요.
아래처럼 Superglobals 사용하면 됩니다.
$sql_search .= " and wr_1 between {$_REQUEST['fp1']} and {$_REQUEST['fp2']} ";
+ $_REQUEST 특성 이해 후 사용. 또는 폼에 맞게 $_GET, $_POST 등의 Superglobals를 사용.
- https://www.php.net/manual/en/reserved.variables.request.php
* 참고로 저렇게 곧바로 사용하면 숫자가 아닌 값이 들어올 때 문제가 되니 (SQL Injection)
아래처럼 최소한의 안전 장치를 마련하면 좋습니다. (방법은 다양한데 참고로 한가지 남겨요.)
$fp1 = (int)preg_replace('/[^\d]+/', '', $fp1); // \d = 0-9 숫자 ... 숫자가 아닌 모든 문자[열] 제거 후 정수화
$fp2도 마찬가지 처리
해당검색을 어디다가 쓰셨는지 모르겠는데 list.php 에 검색 하는 부분들을 수정해주셔야 합니다. 해당만 검색을 한다면 검색어 없을때도 같이요
bbs/list.php에서 변경하신 건가요?
우선 $sca 또는 $stx가 있어야 sql_search 조건을 만들게 됩니다.
if ($sca || $stx || $stx === '0') { //검색이면
$is_search_bbs = true; //검색구분변수 true 지정
$sql_search = get_sql_search($sca, $sfl, $stx, $sop);
해당 <form에
<inupte type="hidden" name="stx" value="0" />
을 추가해 보세요.
답변을 작성하시기 전에 로그인 해주세요.