다중조건 검색 관련 채택완료
아직 해결을 못하고 있어 한번더 올립니다..
지역 선택 > 인원 선택 > 명칭입력 하면 검색이 되어야 하는데요
</p><p style="margin-left: 80px;"><span style="font-size: 10pt; line-height: 1.5;"> <div></span></p><p><span class="Apple-tab-span" style="white-space:pre"> </span><span class="title">장소검색</span></p><p><span class="Apple-tab-span" style="white-space:pre"> </span><label for="sido" class="sound_only">장소검색</label></p><p><span class="Apple-tab-span" style="white-space:pre"> </span><select name="sido" id="sido" class="st"></p><p><span class="Apple-tab-span" style="white-space:pre"> </span><option value="">시.도</option></p><p><span class="Apple-tab-span" style="white-space:pre"> </span><option value="경기도">경기도</option></p><p><span class="Apple-tab-span" style="white-space:pre"> </span></select></p><p><span class="Apple-tab-span" style="white-space:pre"> </span><label for="" class="sound_only">장소검색</label></p><p><span class="Apple-tab-span" style="white-space:pre"> </span><select name="gugun" id="gugun" class="st"></p><p><span class="Apple-tab-span" style="white-space:pre"> </span><option value="">구.군</option></p><p><span class="Apple-tab-span" style="white-space:pre"> </span><option value="안성시">안성시</option></p><p><span class="Apple-tab-span" style="white-space:pre"> </span></select></p><p><span class="Apple-tab-span" style="white-space:pre"> </span></div></p><p> </p><p><span class="Apple-tab-span" style="white-space:pre"> </span><div></p><p><span class="Apple-tab-span" style="white-space:pre"> </span><span class="title2">인원</span></p><p><span class="Apple-tab-span" style="white-space:pre"> </span><label for="sido" class="sound_only">인원</label></p><p><span class="Apple-tab-span" style="white-space:pre"> </span><input type="text" name="pe_start" value="" class="text_input" size="6" > ~ <input type="text" name="pe_end" value="" class="text_input" size="6" ></p><p><span class="Apple-tab-span" style="white-space:pre"> </span><span class="title2">명</span></p><p><span class="Apple-tab-span" style="white-space:pre"> </span> </p><p><span class="Apple-tab-span" style="white-space:pre"> </span></div></p><p> </p><p><span class="Apple-tab-span" style="white-space:pre"> </span><div></p><p><span class="Apple-tab-span" style="white-space:pre"> </span><span class="title">명칭</span></p><p><span class="Apple-tab-span" style="white-space:pre"> </span><label for="stx" class="sound_only">명칭</label></p><p><span class="Apple-tab-span" style="white-space:pre"> </span><input type="text" name="stx" value="<?php echo $stx; ?>" required class="text_input" size="45"></p><p><span class="Apple-tab-span" style="white-space: pre;"> </span></div> </p><p>
이렇게 검색이 된 후에
</p><p>$where = " where ";</p><p>$sql_search = "";</p><p>$stx2 = $sido.' '.$gugun;</p><p>$stx3 = $pe_start.' '.$pe_end;</p><p>if ($stx != "") {</p><p> if ($sfl != "") {</p><p> $sql_search .= " $where $sfl like '%$stx%' and ca_addr1 like '%$stx2%' or ca_10 BETWEEN '%$pe_start%' AND '%$pe_end%'";</p><p> $where = " and ";</p><p> }</p><p> if ($save_stx != $stx)</p><p> $page = 1;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span></p><p>} </p><p>
이렇게 검색출력이 되는데요
"지역"하고 "명칭" 값은 정상적으로 검색이 되는데 인원값이
100~ 200 사이로 검색을 해도 500 으로 등록된 자료가 출력이 되네요..
"지역" 하고 "명칭" 값만 제대로 찾고 있는 것 같습니다..
어디가 잘못된 걸까요.
아 그리고.. 인원 입력하는 "pe_start" 와 "pe_end" 가 검색될 때 변수가 제대로 주어졌는지.. 모르겠네요
답변 3개
and와 or가 저렇게 나열되면 당연히 100~200 아닌 값도 나오죠
경기도 안성시 이거나 100~200 인 것을 찾게되니 경기도 안성시 중에 100~200 아닌 것이 잇으면 다나오죠
경기도 안성시 중에서 100~200 인 것을 찾는다면 모두 and
$sfl like '%$stx%' and ca_addr1 like '%$stx2%' and ca_10 BETWEEN '$pe_start' AND '$pe_end'
답변에 대한 댓글 3개
if($stx) $sql_sch[]= "INSTR($sfl , '$stx') ";
if($sido && $gugun){
$stx2 = $sido.' '.$gugun;
$sql_sch[]= "INSTR(ca_addr1 , '$stx2' ) ";
}
if($pe_start) $sql_sch[]= "ca_10 *1 >= $pe_start "; //100 만 넣으면 100이상 모두 검색
if($pe_end) $sql_sch[]= "ca_10 *1 <= $pe_end "; // 200만 넣으면 200이하 모두 검색 , 둘다 넣으면 100~200
if($sql_sch[0]) $sql_search = implode(" and ", $sql_sch);
댓글을 작성하려면 로그인이 필요합니다.
ca_10 BETWEEN '$pe_start' AND '$pe_end'
이렇게 함 해보세요. 안되면 따옴표 빼고 해보시구요.
답변에 대한 댓글 5개
http://www.veple.co.kr/
장소검색에서 "경기도 안성시 100~ 300" 이라고 하고 명칭에 "신라" 라고 해서 검색해보시면 ..아실거에요..
하단에 출력 되는데..이름 밑에 500 이라는게 500명 이란건데 100명~300명 사이로 검색하면 나오면 안되면 안되는 자료니까요..
^^;;
또는 ca_10 필드의 값들 몇개만이라도요.. ca_10의 자료형은 varchar인가요?
$where = " where ";
$sql_search = "";
$stx2 = $sido.' '.$gugun;
$stx3 = $pe_start;
$stx4 = $pe_end;
if ($stx != "") {
if ($sfl != "") {
$sql_search .= " $where $sfl like '%$stx%' and ca_addr1 like '%$stx2%' or (ca_10 BETWEEN '%$stx3%' AND '%$stx4%') ";
}
if ($save_stx != $stx)
$page = 1;
}
$sql_common = " from {$g5['g5_shop_category_table']} ";
$sql_common .= $sql_search;
// 테이블의 전체 레코드수만 얻음
$sql = " select count(*) as cnt " . $sql_common;
$row = sql_fetch($sql);
$total_count = $row['cnt'];
$rows = 15;
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
if ($page < 1) { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
if (!$sst)
{
$sst = "ca_id";
$sod = "desc";
}
$sql_order = "order by $sst $sod";
// 출력할 레코드를 얻음
$sql = " select *
$sql_common
$sql_order
limit $from_record, $rows ";
$result = sql_query($sql);
//$qstr = 'page='.$page.'&sort1='.$sort1.'&sort2='.$sort2;
$qstr = $qstr.'&sca='.$sca.'&page='.$page.'&save_stx='.$stx;
아래는 데이터 입력시에..
ca_10 필드입니다.
<tr>
<th scope="row" colspan="2">총 객실 수</td>
<td colspan="3"><input type="text" name="ca_10" value="<?=$ca['ca_10']?>" id="ca_10" class="text_input" size="15"></td>
</tr>
일단 균이님 덕에 해결된듯 싶군요. (역시 고수는 시야가 넓군요. -_-b)
지역,인원은 검색안한경우 검색어만 적용하는걸로 조금 수정해봤습니다. 검증은 못했구요 (죄송.. ^^;;)
$where = " where ";
$sql_search = "";
$ca_addr = $ca_10 = '';
if(trim($sido)) {
$stx2 = $sido.' '.$gugun;
$ca_addr = " and ca_addr1 like '%$stx2%' ";
}
if(trim($pe_start) && trim($pe_end)) {
$ca_10 = " and ca_10 BETWEEN '$pe_start' AND '$pe_end' ";
}
$stx3 = $pe_start.' '.$pe_end;
if ($stx != "") {
if ($sfl != "") {
$sql_search .= " $where $sfl like '%$stx%' $ca_addr $ca_10 ";
$where = " and ";
}
if ($save_stx != $stx)
$page = 1;
}
댓글을 작성하려면 로그인이 필요합니다.
100~ 200 사이라는게 100번째와 200번째 사이중에 랜덤으로 하나 라는 뜻인가요?
아니면 100번째와 200번째 사이의 결과를 다 가져오는건가요?
답변에 대한 댓글 1개
사용자가.. 200명~ 600명 으로 입력햇다면 그 사이의 명수로 입력된 데이터들이 나오는거거든요.
예를 들어 500 명으로 등록된 자료들만 나와야 되는거죠 ..
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
지역과 명수 입력 안하고 그냥 "신라"라고만 치면 stx 가 먹혀서 신라는 나와야 되는데 안나오네요 ㅠㅠ;;
하나 되니 하나가 안되고 참 ...