2017-11-25 16 views
0

私はこの問題をPHPで持っています。私がしたいことは、タイトル、説明、価格で検索する3つのフィルタを持つ検索エンジンを持つことです。 これは私のインデックス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ファイルを呼び出しています。

私は同じ可変キーワードを使用しているため、すべての結果を1つにまとめません。 問題は、フィルタを作成する方法がわからないため、フィルタがないことです。たぶん、タイトル、説明、価格の3つのオプションでドロップダウンを選択したいと思うかもしれません。しかし、どの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 [私はPHPでSQLインジェクションを防止する方法は?](https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) – FirstOne

+0

私は何かが間違っていると思いますこの "$ _GET ['field']。"これは構文上の問題か、クォートマークの問題です。それは私のために働かない、私の編集者はそれが間違っていることを示す – CaL17

1

スプリットexplode機能ソリューションの

$keywords = "world word2"; 
$keywords_arr = explode(" ",$keywords); 
echo $keywords_arr[0]; 
関連する問題