다중검색 질문 드립니다.
본문
검색 get 으로 봤을때 &info01=회관&info01=기타공간
이런 형태로 검색값이 넘어가고 있구요.
예를 들어서 사용자페이지에서
회관 이나 기타공간 하나씩 체크하면 검색이 되는데
다중으로 둘다 체크 했을때는 검색이 안되는데요.. 조언 좀 부탁드립니다.
머..회관기타공간 이렇게 연달아서 인식을 해서 그런지...그래도 like 에서 %% 로 감싸면
단어가 해당되면 다 나오지 않나요...
자료 등록할 때는 ca_3 값으로 라디오로 등록됩니다.
아래는 검색결과페이지 sql 구문 입니다.
$where = " and ";
$sql_search = "";
$ca_addr = $ca_10 = $in1 = $in2 = '';
if(trim($sido)) {
$stx2 = $sido.' '.$gugun;
$ca_addr = " and ca_addr1 like '%$stx2%' ";
}
if($gugun == '전체') {
$stx2 = $sido;
$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 ";
}
else if(trim($pe_start)) {
$ca_10 = " and ca_10 BETWEEN 1 AND $pe_start ";
}
else if(trim($pe_end)) {
$ca_10 = " and ca_10 BETWEEN 1 AND $pe_end ";
}
if($info01 || $info02) {
$stx8 = $info01;
$stx9 = $info02;
$in1 = " and ca_3 like '%$stx8%' ";
$in2 = " and ca_20 like '%$stx9%' ";
}
if ($stx != "") {
if ($sfl != "") {
$sql_search .= " $where $sfl like '%$stx%' $ca_addr $ca_10 $in1 $in2 ";
$where = " and ";
}
} else {
$sql_search .= " $ca_addr $ca_10 $in1 $in2 ";
}
핵심은.. 하나씩 체크하면 잘 되는데.. 중복으로 체크하면 먹히질 않고 있습니다.
!-->답변 1
질문 올리실때 해당 url이나 좀 길게 되더라도 가급적 검색폼(html)과 처리(php) 소스 모두를 보여주시는게 좋겠습니다.
예전 질문에서 사이트를 본 기억이 있어서 뒤적거려서 들어가봤는데요..
장소유형, 체육시설, 특별 대관장소는 info01 => ca_3
실내 좌석 배치 info02 => ca_20
특수 검색 info03 => ??
이렇게 되있던데 맞는건가요?
info03은 위의 소스에서 아예 안보이는데 어떤식으로 검색되고 있는건지 모르겠군요.
여튼.. 지금의 방법으로는 info01중 마지막 체크된 것만 검색할겁니다.
검색폼에서 <input type="checkbox" name="info01" value="호텔"> 이 부분들중 name에 넣는 값을 배열로 바꿔보세요.
<input type="checkbox" name="info01[]" value="호텔">
각각 info01~03 모두 name값 뒤에 [] 이걸 붙이면 php에서 받을때 배열값으로 받게됩니다.
그에따른 처리도 바뀌어야합니다.
위의 소스중 31~39 라인 수정
$in1 = $in2 = '';
if(count($info01)) {
foreach($info01 as $value) {
$in1 .= " and ca_3 like '%$value%' ";
}
}
if(count($info02)) {
foreach($info02 as $value) {
$in2 .= " and ca_20 like '%$value%' ";
}
}
이렇게하면 체크한 키워드 모두 검색할 겁니다.
info03은 따로 언급이 없어서(필드명을 몰라서) 안넣었는데요, 필요하면 위처럼 추가해서 넣으시면 될겁니다.
답변을 작성하시기 전에 로그인 해주세요.