【发布时间】:2016-09-16 07:12:35
【问题描述】:
我正在尝试创建多选项搜索。我到处寻找,似乎找不到合适的解决方案,尽管很多网站都有这个。 所以我有我的 html 表单(为了不让你感到厌烦,它被截断了一点):
<form method="get" id="searchForm" name="searchForm" action="search-text.php" >
<select name="make" id="make">
<option value="">ANY MAKE</option>
<option value="make1">MAKE1</option>
<option value="make2">MAKE2</option>
</select>
<select name="model" id="model">
<option value="">ANY MODEL</option>
<option value="model1">MODEL1</option>
<option value="model2">MODEL2</option>
</select>
<select name="minprice" id="minprice">
<option value="">ANY PRICE</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<select name="maxprice" id="maxprice">
<option value="">ANY PRICE</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
</form>
然后在 search.php 页面上,我可以获得所有变量,但我正在努力编写 SELECT 查询。我尝试过使用 AND,但当然,这只有在设置了所有变量时才有效。我总共有 8 个可以设置的变量。 我什至试图做类似下面的事情,但显然不是要走的路。
SELECT * FROM search data where if(isset($make)) AND if(isset($model)) etc etc
非常感谢大家的帮助。任何建议将不胜感激。我正在尝试尽可能多地学习,但我真的坚持这一点。
更新:所以我做了一些创造性的实验,我觉得我已经接近了,只是无法让它工作:
$query = array();
if (!empty($_GET['vType'])) {
$query[] = "vType='$vType'";
}
if (!empty($_GET['make'])) {
$query[] = "make='$make'";
}
if (!empty($model)) {
$query[] = "model='$model'";
}
if (!empty($yearfrom)) {
$query[] = "minyear >'$yearfrom'";
}
if (!empty($yearto)) {
$query[] = "maxyear>'$yearto'";
}
if (!empty($minprice)) {
$query[] = "minPrice >'$minprice'";
}
if (!empty($maxprice)) {
$query[] = "maxyear >'$maxprice'";
}
if (!empty($location)) {
$query[] = "location='$location'";
}
if (empty($query)){
$where = "WHERE";
}else{
$where = "";
}
$query = implode(' AND ', $query);
$sql = "SELECT * FROM searchdata $where $query";
$result = mysqli_query($conDB, $sql);
if (mysqli_num_rows($result) === 0) {
echo 'Nothing Found';
}
while ($row = $result->fetch_assoc()) {
echo $row['vType'];
我确定我在这里做错了什么。谢谢大家,非常感谢您的帮助
【问题讨论】:
-
你有提交按钮吗?
-
请具体说明您希望如何构建查询!