2014-09-12 105 views
0

所以我想要一個帶有過濾器的搜索頁面。例如,我會搜索一個產品並按價格或顏色過濾它。用我的代碼在這裏,我想搜索一個記錄,根據我的過濾器顯示。在我的代碼中,我只有LASTNAME。如果我搜索數據庫中存在的姓氏,該記錄將顯示。姓氏由姓氏和年齡組成。所以我想添加過濾器選項,比如按年齡或名字過濾它,而不僅僅是姓氏。我該怎麼做?我嘗試了很多代碼,但仍然令人困惑。我希望我能得到一點幫助。如何過濾不同屬性的搜索結果

<?php 

mysql_connect("localhost","root","") OR die("Could not connect!"); 
mysql_select_db("friends") OR die("No database found!"); //"friends" 

$output=''; 

if(isset($_POST['search'])){ 
    $searchq = $_POST['search']; 
    $searchq = preg_replace("#[^0-9a-z]#i","",$searchq); 

    $query = mysql_query("SELECT * FROM Names WHERE lastname LIKE '%$searchq%' ") or die("could not   search!"); 
    $count = mysql_num_rows($query); 

    if($count == 0){ 
    header("Location: error.html"); 

    } 
     else{ 
    while($row = mysql_fetch_array($query)){ 

    echo "<tr>"; 
    $fname = "<td>".$row['FirstName']."<td>"; 
    $lname = "<td>".$row['LastName']."<td>"; 
    $Gender = "<td>".$row['Gender']."<td>"; 
    $Age = "<td>".$row['Age']."<td>"; 
    $id = "<td>".$row['id']."<td>"; 
    echo "<tr>"; 

    $output .='<div>'.$id.'&nbsp'.$fname.'&nbsp'.$lname.'&nbsp'.$Gender.'&nbsp '.$Age.'</div>'; 
    } 
    } 
} 
?> 
+0

你所說的「姓氏由名字太和年齡。」是什麼意思?您還應該閱讀[SQL注入](http://php.net/manual/en/security.database.sql-injection.php),並且不推薦使用MySQL(您應該使用[MySQLi](http:// php。淨/手動/ EN/intro.mysql.php))。 – ForguesR 2014-09-12 14:40:56

+0

請告訴我們你已經嘗試過了。 SO是爲了幫助你解決你的編程問題,而不是讓他們爲你完成工作。 – 2014-09-12 15:11:39

回答

0

你可以這樣做:

$age = $_POST['Age']; 
$first_name = $_POST['FirstsName']; 

$filter = ""; 

if(isset($age)) { 
$filter .= " AND Age = '$age'"; 
} 

if(isset($first_name)) { 
$filter .= " AND Age = '$first_name'"; 
} 

$query = mysql_query("SELECT * FROM Names WHERE lastname LIKE '%$searchq%' {$filter} ") or die("could not   search!");