다중조건 검색 관련 채택완료
아직 해결을 못하고 있어 한번더 올립니다..
지역 선택 > 인원 선택 > 명칭입력 하면 검색이 되어야 하는데요
</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);
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 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;
}
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
지역과 명수 입력 안하고 그냥 "신라"라고만 치면 stx 가 먹혀서 신라는 나와야 되는데 안나오네요 ㅠㅠ;;
하나 되니 하나가 안되고 참 ...