Copy
$wfrom = isset($_GET['wfrom']) ? preg_replace('/[^0-9]/', '', trim($_GET['wfrom'])) : '';$wto = isset($_GET['wto']) ? preg_replace('/[^0-9]/', '', trim($_GET['wto'])) : ''; if ($it_5) $where[] = " it_5 regexp '($it_5,|,$it_5,|,$it_5)'"; if ($wfrom && $wto) { $where[] = " ( (SUBSTRING_INDEX(a.it_5,',',1) BETWEEN '$wfrom' AND '$wto') OR (SUBSTRING_INDEX(SUBSTRING_INDEX(a.it_5,',',2),',',-1) BETWEEN '$wfrom' AND '$wto') OR (SUBSTRING_INDEX(a.it_5,',',-1) BETWEEN '$wfrom' AND '$wto') ) ";} else if($wfrom) { $where[] = " ( (SUBSTRING_INDEX(a.it_5,',',1) >= '$wfrom') OR (SUBSTRING_INDEX(SUBSTRING_INDEX(a.it_5,',',2),',',-1) >= '$wfrom') OR (SUBSTRING_INDEX(a.it_5,',',-1) >= '$wfrom' ) ) ";} else if($wto) { $where[] = " ( (SUBSTRING_INDEX(a.it_5,',',1) <= '$wto') OR (SUBSTRING_INDEX(SUBSTRING_INDEX(a.it_5,',',2),',',-1) <= '$wto') OR (SUBSTRING_INDEX(a.it_5,',',-1) <= '$wto' ) ) ";} if($wfrom && $wto) $query_string .= '&wfrom='.$wfrom.'&wto='.$wto;
이 소스를 사용할 때 여분필드에 50,100,150 이렇게 콤마로 넣으면 되나요?
그리고 사이즈가 꼭 3개가 있는건 아닌데 1~3개 정도 있는데 1개 있을때나 2개 있을 때도 검색이 되는건가요?
답변 1개 / 댓글 3개
채택된 답변
+20 포인트
04~05번줄이 단일 값 넘어왔을때 단일 검색이고
07~13번줄은 범위 검색 쿼리 만드는부분인데요.
단일 검색은 입력값이 1개가 아니라면 검색이 됩니다.
범위는 다시 짜야합니다.
단일검색은 설명드리자면 검색할 필드(it_5)에 "검색값," 또는 ",검색값," 또는 ",검색값" 이 있으면 검색이 되는거예요.
it_5가 1개면 콤마가 없으니 검색이 안되겠죠? 위코드로 1개만 있는걸 검색하려면 it_5에 넣을때 1개면 "값," 이런식으로 넣으면 검색이 됩니다.(편법)
it_5가 2개면 값이 "값,값" 이니까 "검색값," ",검색값" 여기에 걸려서 검색이 됩니다.
범위 검색은 it_5를 ,로 나눠서 몇개가 있는지 확인하고 그 갯수에 맞게 쿼리를 작성해야합니다.
답변에 대한 댓글 3개
9년 전
아 그렇군요 ㅠㅠ 그럼 10개가 있으면 10개 쿼리를 다 작성하고 1개만 있는 상품의 경우는 값, , , , , , , , , 이런식으로 10개를 해야하는군요 ㅠㅠ
9년 전
너무 좋은 소스니 애매하네요 ㅠㅠ 왜냐면 사이즈가 1개인 상품이 80% 정도인데 모두 3개인것처럼 값, , 이렇게 만들어야하고 나머지 20%가 상품3개 몇개 상품 10개 몇 개 이런식인데 10개를 쓰려면 사이즈가 한개인 80%의 상품을 값, , , , , , , , 이렇게 만들어야 하네요 ㅠㅠ 포기해야하나 이부분은
답변을 작성하려면 로그인이 필요합니다.