2012-08-07 2 views
0

안녕하세요, 난 Search.phpPHP 다중 옵션 검색 쿼리 ....? 내가 PHP에서 검색 상자 노력 새로 온

내가 문제

에게이 첩과 노력하지만지고있어 아래

<form method="post" action="search.php"> 
<select name="purpose"> 
<option value="" selected="selected">-any-</option> 
<option value="For Sale">For Sale</option> 
<option value="For Rent">For Rent</option> 
</select> 

<select name="type"> 
<option value="" selected="selected">-any-</option> 
<option value="Bungalow">Bungalow</option> 
<option value="Apartment">Apartment</option> 
</select> 

<select name="location"> 
<option value="" selected="selected">-any-</option> 
<option value="Norway">Norway</option> 
<option value="Itley">Itley</option> 
    </select> 
<input type="submit" value="Search"> 
</form> 

로 양식을 작성 이

SELECT * FROM test WHERE purpose='$purpose' AND location='$location' AND type='$type' 
같은
$purpose=$_POST['purpose']; 
$type=$_POST['type']; 
$location=$_POST['location']; 

내가 넣어 경우 및 쿼리

그것은 내가 다음은 혼합

결과 필터링이

SELECT * FROM test WHERE purpose='$purpose' OR location='$location' OR type='$type' 

같이 넣어 또는 쿼리의 경우 빈

표시의 하나 개의 결과로 하나를 필터링하지 내가 원하는 모든 IT 필터링을 선택한 경우 (목적> > 유형 >> 위치) AND 경우 하나

Result not found! 

01이 표시되지만 정확한 결과 다른 로 필터링 한 다음 선택한

나는 이렇게하고 있지만 오류가있다.

$ qry = "SELECT * FROM test WHERE 1 = 1";

if ($ purpose! = "") $ qry. = "AND purpose = '$ purpose'";

if ($ location! = "") $ qry. = "AND location = '$ location'";

if ($ type! = "") $ qry. = "AND type = '$ type'";

동안 (= $ 행로 MYSQL_ASSOC의 ($ SQL))

에코 $ 행 [ '목적'];

echo $ row [ 'location'];

echo $ row [ 'type'];

가 넣어 한

답변

2

모든 한을 기준으로 필터링 다른 찾을 수없는 디스플레이 결과와 일치하지 않을 경우 내가 원하는 그 변수 취득 후 :

$sql = array(); 

if (!empty($purpose)) { 
    $sql[] = "purpose='$purpose'"; 
} 

if (!empty($type)) { 
    $sql[] = "type='$type'"; 
} 

if (!empty($location)) { 
    $sql[] = "location='$location'"; 
} 

$sql = implode(' AND ', $sql); 
$sql = "SELECT * FROM test" . (!empty($sql)?: " WHERE " . $sql: ''); 

편집 : 귀하의 의견을보고 한 후

먼저 mysql_connect 함수를 사용하여 데이터베이스에 연결해야한다. 예를 들어, 다음 코드를 가지고 있다고 가정 해 보겠습니다.

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); 

if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 

이제 $ link 변수에 mysql 핸들이 있습니다. 이 코드는 mysql 연결을 사용하려는 모든 페이지 중 첫 번째 페이지로 이동해야합니다.나도이 방법을 사용

$result = mysql_query($sql); 

if (mysql_num_rows($result) === 0) { 
    echo 'Result not found'; 
} 

while ($row = mysql_fetch_array($result)) { 
    echo $row['purpose'] . '<br/>'; 
    echo $row['location'] . '<br/>'; 
    echo $row['type']; 
} 
+0

1 만는 mysql_real_escape_string()로 맞습니다 – Waygood

+0

를 aswell : 당신이 SQL 문장이 있으면 (내가 먼저 쓴 코드는 $ SQL var에에), 후이를 사용합니다. mysql_real_escape_string()은 항상 사용되어야합니다. 내가 그것을 넣지 않은 이유는 그가 그가 php에 새로운 것을 말했기 때문에, 그가 magic_quotes를 사용할 수 있는지 여부를 알 수 없다. 따라서 활성화 된 경우 mysql_real_escape_string() 함수에 문제가 발생합니다. – elxordi

+0

선생님, 저는 이렇게하고 있지만 오류를 보여줍니다. '$ sql = array ($ purpose, $ location, $ type); if (! empty ($ purpose)) { $ sql [] = "목적 = '$ 목적'"; } if (! empty ($ Pro_type)) { $ sql [] = "type = '$ type'"; } if (! empty ($ location)) { $ sql [] = "location = '$ location'"; } $ sql = implode ('AND', $ sql); $ sql = "SELECT * FROM 테스트". (! empty ($ sql)? "WHERE". $ sql : ''); –

0
$qry = "SELECT * FROM test WHERE 1=1"; 

if($purpose!="") 
    $qry .= " AND purpose='$purpose'"; 

if($location!="") 
    $qry .= " AND location='$location'"; 

if($type!="") 
    $qry .= " AND type='$type'";