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 检查选择了什么类型并查看我的数据库......目前我有一堆我觉得效率太低的条件,有没有办法摆脱所有这些条件并直接搜索特定列我的数据库来自一个电话?(作为记录,我的数据库列名是 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

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

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 回答