구간 검색 between ~ and 구문이 맞나요?
본문
구간 검색 between ~ and 구문이 맞나요?
wr_3에 있는 데이터 과 wr_4에 있는 데이터 사이를 검색하려고
합니다. 감사합니다.
=========================================
if ($wr_3 && $wr_4)
$sql_search .= " and wr_3 between '{$wr_3}' and '{$wr_4}' ";
======================================
답변 7
bbs list.php
1번 수정
// 분류 선택 또는 검색어가 있다면
$stx = trim($stx);
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'";
}
// 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
$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'];
}
2번수정
if ($sst) {
$sql_order = " order by {$sst} {$sod} ";
}
if($_GET[sst] == "wr_9"){
$sql_order = " order by wr_9 asc ";
}
if ($sca || $stx || $t_start || $t_end || count($arr_search) > 0) {
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 ";
if ($t_start || $t_end) {
$sql = " select distinct wr_parent from {$write_table} where {$sql_search} {$sql_order} limit {$from_record}, $page_rows ";
}
}
3번 수정
// 페이지의 공지개수가 목록수 보다 작을 때만 실행
if($page_rows > 0) {
$result = sql_query($sql);
$k = 0;
while ($row = sql_fetch_array($result))
{
if ($sca || $stx || $t_start || $t_end || count($arr_search) > 0) {
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']}' ");
}
}
$list[$i] = get_list($row, $board, $board_skin_url, G5_IS_MOBILE ? $board['bo_mobile_subject_len'] : $board['bo_subject_len']);
if (strstr($sfl, 'subject')) {
$list[$i]['subject'] = search_font($stx, $list[$i]['subject']);
}
$list[$i]['is_notice'] = false;
$list_num = $total_count - ($page - 1) * $list_page_rows - $notice_count;
$list[$i]['num'] = $list_num - $k;
$i++;
$k++;
}
}
list.skin.php
<input class="list_input2" style="width:100px" autocomplete="off" type="t_start" id="t_start" name='t_start' value='<?=$t_start?>' placeholder="시작일" >-
<input class="list_input2" style="width:100px" autocomplete="off" type="t_end" id="t_end" name='t_end' value='<?=$t_end?>' placeholder="종료일">
전 날짜로 넣었는데 수정해서 사용하시면 될꺼같네요
a~b 사이에 있는 애들 검색하는 부분입니다.
여분필드 wr_1 기준입니다.
네 맞습니다. 제가 알려 드렸는데요. 안됩니까?
질문을 정확히 하시면 답변하시는분도 이해가 좋을거같네요
이렇게 하시면 되겠네요.
if ($wr_3 && $wr_4)
$sql_search .= " and ( wr_3 >= '$wr_3' and wr_4 <= '$wr_4' ) ";
여담이지만 and wr_3 between 문장이 보이지 않는 걸로 봐서
if 구문이 동작하지 않은거 같습니다.
if 안의 문장이 참인지 검증을 하셔야 할거 같고...
그전에 wr_3, wr_4 값이 잘 넘어 왔는지 부터 확인해 보셔야 할 거 같습니다.
톤수 정보는 어디에 들어있나요?
톤수를 wr_3,wr_4로 범위를 넘기시는거 같은데
실제 DB에 저장된 톤수정보의 대상은 무엇인지 모호하네요
SELECT 태그의 wr_3,4 로 넘기는 범위의 이름이
실제 db에도 그렇게 들어가 있다면
다중 필드를 검색해야 합니다만
그런것 같진 않아보이구요
db에 톤수정보가 들어간 필드 between 넘겨받은 wr_3 and 넘겨받은 wr_4
의 구조가 되면 범위는 맞습니다
답변 감사합니다. 안되네요.
혹시 이렇게 해도 되나요?
if ($wr_3 && $wr_4)
$sql_search .= " and wr_3 between 1 and 99 ";
echo $sql; 했습니다. 아래와 같은 메시지가 나오네요. ㅠㅠ
SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM g55419_write_consult_buying WHERE wr_3 like '%1%' and wr_4 like '%5%' and (wr_num between -1 and (-1 + 10000))