我创建了一个HTML表单,其中包含一个搜索框和一个美国50个州的下拉列表。我想要的是让用户在搜索框中键入关键字(电子邮件,主题,用户名等),然后从下拉列表中选择一个州。通过从下拉列表中选择状态,我希望我的PHP代码仅在该选定状态下从搜索框中查找关键字。例如,作为用户,我想在华盛顿州找到“足球”,并查看结果列表。
换句话说,我如何仅在选择状态下与搜索表单结合显示结果?
这是我的一些PHP代码,可以让您全面了解我正在努力实现的目标。
// this is pulling the text that was typed in the html search box
$searchbox = $_POST['searchbox'];
// this is pulling the state from my HTML drop down menu
$state = $_POST['state'];
$searchboxresult = mysql_query("
SELECT *
FROM table
WHERE (ID LIKE '%".$_POST['searchbox']."%')
OR (stateID LIKE '%".$_POST['searchbox']."%')
OR (city LIKE '%".$_POST['searchbox']."%')
OR (subject LIKE '%".$_POST['searchbox']."%')
OR (email LIKE '%".$_POST['searchbox']."%')
OR (posting LIKE '%".$_POST['searchbox']."%')
OR (skill LIKE '%".$_POST['searchbox']."%')
OR (event LIKE '%".$_POST['searchbox']."%')
OR (days LIKE '%".$_POST['searchbox']."%')
OR (url LIKE '%".$_POST['searchbox']."%')
");
// and
$statedropdownresult = mysql_query("
SELECT * FROM table WHERE stateID LIKE '%$state%'
");
然后我有一个while循环搜索所有内容并输出数据。但我不能让状态下降来限制用户搜索的内容。我只能将一个或另一个mysql_query与我的while循环结合使用,而不是两者兼而有之。出于某种原因,使用 AND 将查询合并为一个似乎也不起作用。有什么想法吗?
我知道代码很草率并且存在安全问题,但是我将在稍后进行清理。如果您需要更多细节或澄清某些事情,我会很高兴详细说明!
答案 0 :(得分:1)
您可以尝试这样的事情: -
$sql ="SELECT * FROM table WHERE 1";
if($_POST['searchbox'] != ''){
$sql =" and (ID LIKE '%".$_POST['searchbox']."%') OR (stateID LIKE
'%".$_POST['searchbox']."%') OR (city LIKE '%".$_POST['searchbox']."%') OR
(subject LIKE '%".$_POST['searchbox']."%') OR (email LIKE
'%".$_POST['searchbox']."%') OR (posting LIKE '%".$_POST['searchbox']."%') OR
(skill LIKE '%".$_POST['searchbox']."%') OR (event LIKE
'%".$_POST['searchbox']."%') OR (days LIKE '%".$_POST['searchbox']."%') OR (url
LIKE '%".$_POST['searchbox']."%')";
}
if($state != ''){
$sql .= " and stateID LIKE '%".$state."%'";
}
mysql_query($sql);
希望这有帮助。