2012-10-12 6 views
1

데이터베이스의 테이블로 html 페이지를 채 웠습니다. 불필요한 데이터를 걸러 낼 수있는 상단의 드롭 다운 상자를 추가하고 싶습니다. 여러 변수로 데이터를 필터링 할 수 있도록 쿼리를 만들기 위해이 정보를 데이터베이스로 보내는 방법은 무엇입니까?드롭 다운 상자를 사용하여 MYSQL 데이터 필터링

예를 들어 A, B, C, D 및 E의 5 가지 범주가 있습니다. PHP 코드를 사용하여 A, B, C, D 및 E에 가능한 값/항목을 채 웁니다. 또한 사용자가이 열을 필터의 일부로 포함하지 않으려는 경우를 대비하여 "NULL 항목"을 추가했습니다.

그래서 지금은 약자로

, 각각의 컬럼에 대해 우리가 할 수

Apple, always, as, amazing, as, almonds, NULL. 
Belly, boosts, bad, NULL. 
Candy, can, create, NULL. 
Dandy, does, do, don't, NULL. 
Elements, exist, NULL. 

어떻게 변수가 무기한있는 데이터베이스에 정보를 보내는 가겠어요? 그들은 설정 될 수도 있고 설정되지 않을 수도 있습니다.

나는 isset()을 사용하여 변수가 처음 설정 되었는지를 먼저 보았지만 그곳에서 어떻게 진행하겠습니까? 그것은 'if'진술처럼 보인다. 사용자가 입력 한 변수 값을 기반으로 쿼리를 변경하기 만하면됩니다. 그러나 나는 그렇게 쉬운 방법을 보지 못합니다.

"WHERE A = this AND B = that AND C = thisthat AND .."를 쿼리 끝에 추가하지만 하나 이상의 항목 또는 모든 항목이 null 인 경우 어떻게됩니까?

도움을 주셔서 감사합니다.

$where = array(); 

if ($A != '') 
{ 
    $where[] = 'A = "' . $A . '"'; 
} 

if ($B != '') 
{ 
    $where[] = 'B = "' . $B . '"'; 
} 

if ($C != '') 
{ 
    $where[] = 'C = "' . $C . '"'; 
} 

if ($D != '') 
{ 
    $where[] = 'D = "' . $D . '"'; 
} 

if ($E != '') 
{ 
    $where[] = 'E = "' . $E . '"'; 
} 

// Now get the $where 
$final_where = ''; 
if (count($where) > 0) 
{ 
    $final_where = implode(' AND ', $where); 
} 

// $final_where will contain 
// A = 'ab' AND B = 'cd' etc. 

참고 입력을 소독 할 수 있는지 확인하십시오를 다음과 같이

답변

1

당신은 쉽게 당신의 WHERE 쿼리를 구성 할 수 있습니다. 예를 들어, $ A에 포함시킬 값이 포함되어 있는지 확인해야합니다. 다른 것은 버려야합니다. 예 :

$a_array = array('first value', 'second value', 'third value'); 
if (in_array($A, $a_array)) 
{ 
    // Valid choice - we can use it 
} 
else 
{ 
    // Not valid set $A to null 
    $A = ''; 
} 
과 같이 in_array을 사용할 수 있습니다.
관련 문제