2016-06-15 2 views
3

내 웹 사이트의 필터 기능을 만들려고합니다. 이 작업을 수행하기 위해 SELECT DISTICT을 사용하라는 지시를 받았습니다. 아래는 내가 현재 가지고있는 것입니다. STATE 열의 모든 고유 값을 검색하고 확인란으로 표시하여 사용자가 페이지의 표에 표시 할 상태를 확인할 수 있도록합니다.매우 많은 조건이있는 DISTINCT 선택

$sql = "SELECT DISTINCT state FROM allproperties"; 
$result = mysqli_query($con,$sql); 

while ($row = mysqli_fetch_array($result)) { 
    echo "<input type='checkbox' name='state' value='" . $row[0] . "'>" . $row[0] . "<br>"; 
} 

내 문제는이 필터 기능은, 단지 미국은 표시 할 선택하지 않는 조건을 많이 가지고 것이다 카운티, 회원 연령 선택이 될 것입니다, 회원 공헌 에칭. 사용자가 필터링 된 결과를 표시하기 위해 DISPLAY 버튼을 클릭 할 때이를 위해 SQL 쿼리를 작성하는 방법을 모르겠습니다. 단지 몇 가지 조건 만 있으면 "SELECT * WHERE (...) AND ... (....)"을 사용할 수 있지만 필터 기능으로 사용하면 다음과 같은 조건이 많을 것입니다 :

WHERE (state='CA' OR state='NV' OR state='WA' ..... so on and so fort)

WHERE state=OR('CA','NV','WA')처럼 그렇게 할 방법이 있습니까? state=?

또한 필터 기능에 대한 샘플 검색어가 있습니까? 필터 기능은 음악 웹 사이트에서 장르 등의 노래를 검색 할 때와 같습니다. 혼란스러운 질문에 대해 미리 사과 드리며, 이에 대한 올바른 질문을 찾을 수 없습니다.

답변

5

예, IN()을 사용할 수 있습니다 : 다음 OR들 severals

WHERE state IN('CA','NV','WA'...) 

그것은 같은 효과를하고 있지

, 그것은 훨씬 더 효율적입니다, 항상 불필요한 OR 년대를 피하려고합니다.

@Kulvar에서 언급 한 바와 같이

, 당신이 PHP와 함께 작동하도록 implode()을 사용할 수 있습니다, 같은 :

'WHERE state IN(' . implode(',', $states) . ')' 
+1

내파()는 큰이 작동합니다 : D ''상태 (IN '내파 ('. ', $ states).') '' – Kulvar

+0

implode()를 사용하지 않으면 PHP에서 작동하지 않습니까? $ states는 무엇입니까? 저는 변수가 없습니다 : – jay

+0

값의 배열을 비교하는 쉬운 방법입니다. 거기에 모든 상태 옵션을 저장해야합니다. Google PHP implode use. 원하는 경우 수동으로 모든 옵션을 지정할 수도 있습니다. @어치 – sagi