在我的网站上,我有一个搜索栏。它作为一个表单,提交并搜索我的数据库中的文本栏中输入的值,在选择类型的列中。我的表单看起来像这样
<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来检查选择了什么类型并查看我的数据库...目前我有一堆条件,我觉得效率太低,有没有办法摆脱所有这些条件,直接搜索特定的列我的数据库来自一个电话? (对于记录,我的db列名称是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
我一直在寻找几个小时试图找到一种方法只为任何类型运行一个查询,但我可能没有任何工作。请非常感谢任何建议或帮助。
答案 0 :(得分: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";
}
答案 1 :(得分: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>