2

私のウェブサイトには検索バーがあります。タイプが選択されている列のテキストバーに入力された値をデータベースに送信して検索するフォームとして機能します。私のフォームは次のようになります

<form action=" " method="POST" >
 <select name="search_type">
<option value="fullname">People</option>
<option value="username" >Username</option>
<option value="firstname”&gt;First Name</option>
<option value="lastname" >Last Name</option>
<option value="email" >Email</option>
</select><input type="text" name="value" >
<input type="submit" value="Search">
</form>

検索のたびに更新され、ユーザーはデータを再選択して元に戻す必要があります.最後に検索されたアイテムを再選択する方法はありますか? 次に、そのフォームから PHP を使用して、選択されたタイプを確認し、データベースを調べます...現在、非効率的すぎると感じる条件式がたくさんあります。これらの条件式をすべて取り除き、特定の列を直接検索する方法はありますか? 1 回の呼び出しでデータベースを? (レコードの場合、私の db 列の名前は、user_fullname、user_username、user_firstname、user_lastname、および user_email です)。私のPHPスクリプトは次のようになります(型変数ごとに1つのブロック条件があります)

If($_POST[‘search_type’] == ‘fullname’){
$results ="SELECT `user_id`, `user_username`, `user_firstname`, `user_lastname` FROM `mytable` WHERE user_fullname = {$_POST[‘value’]}";
while($results_row = mysql_fetch_assoc($results)){
$returned_results[] = array( ///returning stuff///);
}}
///etc

任意のタイプに対して 1 つのクエリのみを実行する方法を見つけるために何時間も探していましたが、何も機能しませんでした。アドバイスやヘルプをいただければ幸いです。

4

2 に答える 2

1

Devon の回答に追加するために、メール検証などの主要な呼び出し内で他の条件付き関数を組み合わせる方法を見つけました。

if($_POST['value'] != ''){
if($_POST['search_type'] == 'user_email'){
if(!filter_var($_POST['value'], FILTER_VALIDATE_EMAIL)) 
    { 
        die("Invalid E-Mail Address"); 
    } 
}
$where = " {$_POST['search_type']} LIKE '%{$_POST[‘value’]}%'";
$results ="SELECT `user_id`, `user_username`, `user_firstname`, `user_lastname` FROM `mytable` WHERE $where";

}
于 2013-01-13T21:42:20.393 に答える
0

mysqlクエリの条件を削除するには、検索タイプの値を実際の列名に設定するのが最も簡単な方法だと思います。そうすれば、その値に対してクエリを実行できます。たとえば、オプション値はフォームの「user_fullname」、「user_username」などであり、PHPスクリプトの場合は次のように試すことができます。

$where = " {$_POST['search_type']} LIKE '%{$_POST[‘value’]}%'";
$results ="SELECT `user_id`, `user_username`, `user_firstname`, `user_lastname` FROM `mytable` WHERE $where";

フォームデータと事前選択フィールドを更新するための最も簡単な方法は、いくつかのPHP条件文だと思います。

<form action="search.php" method="POST" >
 <select name="search_type">
<option value="user_fullname"<?php if($_POST['search_type'] == 'user_fullname'){echo 'selected';} ?>>People</option>
<option value="user_username" <?php if($_POST ['search_type'] == 'user_username'){echo 'selected';} ?>>Username</option>
<option value="user_firstname" <?php if($_POST ['search_type'] == 'user_firstname'){echo 'selected';} ?>>First Name</option>
<option value="user_lastname" <?php if($_POST ['search_type'] == 'user_lastname'){echo 'selected';} ?>>Last Name</option>
<option value="user_email" <?php if($_POST ['search_type'] == 'user_email'){echo 'selected';} ?>>Email</option>
</select><input type="text" name="value" value="<?php echo $_POST['email']; ?>">
<input type="submit" value="Search">
</form>
于 2013-01-13T21:12:40.977 に答える