2013-03-13 95 views
0

通過做一些閱讀&網絡拖網我設法建立一個HTML表格& PHP腳本,將在我有一個MySQL數據庫文本搜索。我可以從表單中的文本中輸入1個字段來成功搜索。我想知道如何擴展這個,以便我可以給用戶兩個字段&他們可以輸入數據1或兩者來優化他們的結果,即搜索名爲'約翰'的所有條目,或名爲'約翰'的所有條目& '都柏林'的城市。我曾嘗試過很多對MySQL查詢的操作,但還沒有成功使它令人滿意地工作。我如何編寫下面的代碼來實現這個功能?PHP多表格字段搜索

我的HTML表單代碼是:

<form method="POST" action="search.php" name="formid"> 
    Name: <input type="text" name="query" /><br> 
    City: <input type="text" name="city" /><br> 
    <input type="submit" name="submit" value="Start Search" /> 
</form> 

&的PHP代碼:

<?php 

include 'db_details.php'; 

$connection = mysql_connect($server, $user, $password); 

mysql_select_db($db, $connection); 

$query=mysql_real_escape_string($_POST['query']); 

$query = htmlspecialchars($query); 

$result=mysql_query("SELECT * FROM colour WHERE (firstname LIKE '%".$query."%') ", $connection) or die ("Cannot run query"); 

echo "<h2>Search Results</h2>"; 

while ($row = mysql_fetch_assoc($result)) 
{ 
    foreach ($row as $attribute) 
    echo "{$attribute} "; 
    echo "<br>"; 
} 

mysql_close(); 
?> 
+1

做你的表是什麼樣子(模式)?你試過什麼了 ? – Daedalus 2013-03-13 14:50:58

+0

添加更多字段,檢查它們是否已填充,根據填充的字段構建一個「WHERE」字符串以添加到quary中 – UnholyRanger 2013-03-13 14:51:40

回答

0

只要把城市字段的值在變量$city

$city = mysql_real_escape_string($_POST['city']); 

$city = htmlspecialchars($city); 

然後像這樣查詢:

$result = mysql_query("SELECT * FROM colour WHERE (firstname LIKE '%".$query."%' OR city LIKE '%".$city."%') ", $connection) or die ("Cannot run query"); 

它會查詢所有結果從colour在名字就像$query或城市就像$city

注:會有這種方法沒有優先級,符合這兩個條件,不會有顏色的行更高的優先級則只有1場

對於更高級的搜索方法,我建議你看看Full-text search藏漢行