2017-11-25 298 views
0

我有這個問題與PHP。我想做的事情是建立一個包含三個過濾器的搜索引擎:按標題,描述和價格搜索。 這是我的索引html。如何在php中創建搜索過濾器

<form style="text-align:center;" method="get" action="search.php"> 
    <label> 
    Search 
    <input type="text"name="keywords" autocomplete="off"> 
    </label> 
    <input type="submit" value="Search"><br> 
</form> 

通過使用操作方法,我打電話給search.php文件。

if(isset($_GET['keywords'])) { 
    $keywords = $db->escape_string($_GET['keywords']); 

    $query = $db->query("SELECT title, description, price FROM products WHERE title LIKE '%{$keywords}%' OR description LIKE '%{$keywords}%' OR price LIKE '%{$keywords}%'"); 
} 

不是它結合了所有的結果之一,因爲我使用的是同一個變量的關鍵字。 現在的問題是我沒有過濾器,因爲我不知道如何創建它。也許我希望有一個下拉選擇與這三個選項:標題,描述,價格。但我不知道如何讓我的PHP代碼看看哪一個被選中。或者,也許我的想法有更好的解決方案? 我應該使用不同的變量,如關鍵字是或什麼?

回答

1

這是簡單的..添加一個選擇標籤。這裏是一個例子。

<!doctype html> 
<html> 
<head> 
    <title>filter</title> 
</head> 
<body> 
<form method="post" action="test1.php"> 
    <select name="keywords" > 
    <option value="title">title</option> 
    <option value="description">description</option> 
    <option value="price">price</option> 
    </select> 
    <input type="submit"> 
</form> 

<?php print_r($_POST); 
if(isset($_GET['keywords'])) { 
    $keywords = $db->escape_string($_GET['keywords']); 

    $query = $db->query("SELECT title, description, price FROM products WHERE '%{$keywords}%' LIKE '%{$keywords}%' "); 
} 

?> 
<br> 


</body> 
</html> 
1

是的。除了你必須保護你的代碼注入

if(isset($_GET['keywords']) && isset($_GET['field'])) { 
     $keywords = $db->escape_string($_GET['keywords']); 
     $sql="SELECT title, description, price FROM products WHERE ". $_GET['field'] ." like '%{$keywords}%'" ; 
     $query = $db->query($sql); 
    } 

:您必須添加一個選擇,以限制搜索的領域:

<form style="text-align:center;" method="get" action="search.php"> 
    <label> 
    Search 
    <input type="text"name="keywords" autocomplete="off"> 
    </label> 
<select name="field"> 
    <option value="title">title</option> 
    <option value="description">description</option> 
    <option value="prcie">price</option> 
</select> 

    <input type="submit" value="Search"><br> 
</form> 

和PHP。

+0

感謝解決方案!我該如何保護我的注入代碼?你能給我一些關於它的信息嗎? – CaL17

+1

@ CaL17 [我怎樣才能防止SQL注入在PHP?](https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) – FirstOne

+0

我猜有些東西是錯誤的這個「。$ _GET ['field']。」。這是一個語法問題或quatation標記問題。它不適合我,我的編輯表明這是不正確的 – CaL17

1

拆分輸入字符串以單一關鍵字explode功能

$keywords = "world word2"; 
$keywords_arr = explode(" ",$keywords); 
echo $keywords_arr[0];