如何自动将以前的表单选择加载到自身中,并对所有选择的类型进行一次查询


How to automatically load previous form selections into itself and make one query for all selected types?

在我的网站上我有一个搜索栏。它作为一个表单,提交并搜索数据库中文本栏中输入的值,在选择类型的列中。我的表单是这样的

<form action=" " method="POST" >
 <select name="search_type">
<option value="fullname">People</option>
<option value="username" >Username</option>
<option value="firstname”>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检查选择了什么类型,并查看我的数据库。目前我有一堆条件,我觉得效率太低,有没有一种方法来摆脱所有这些条件,并直接搜索特定列在我的数据库从一个调用?(对于记录,我的数据库列名是user_fullname, user_username, user_firstname, user_lastname和user_email)。我的PHP脚本是这样的(每个类型变量都有一个条件块)

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

我一直在寻找几个小时试图找到一种方法,只运行一个查询任何类型,但我没有得到任何工作。如有任何建议或帮助,我将不胜感激。

为了添加到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";
}

要删除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>