<form method="post" action="search.php">
<select name="Num[]">
<option value="">Select One</option>
<option value="numofpeople">Number of people</option>
</select>
<select name="op[]">
<option value="">Select One</option>
<option value=">4">>4</option>
<option value=">2">>2</option>
</select>
<br />
<select name="num2[]">
<option value="">Select One</option>
<option value="price">Price</option>
</select>
<select name="op2[]">
<option value="">Select One</option>
<option value="<20000"><20000</option>
<option value="<40000"><40000</option>
</select>
<br />
<div class="input-group-btn">
<button class="btn btn-default" type="submit"><i class="glyphicon glyphicon-search"></i></button>
</div>
</form>
这是我为用户提供下拉列表的代码。它将充当过滤器,通过 mysql 生成更具体的结果,并且不会获取组合这些下拉值的逻辑。
我想要这样的东西:
Select * from hotel where price < 40000;
我将提供“Where”之后的所有关键字。
最佳答案
选择框名称在 html 中定义为数组,您的要求是用户可以在选择框中选择单个选项。因此您需要更新选择框的名称。您无需在选择框值中添加 <,这些条件在服务器端使用。我已经更正了 HTML。
<form method="post" action="">
<select name="Num">
<option value="">Select One</option>
<option value="numofpeople">Number of people</option>
</select>
<select name="op">
<option value="">Select One</option>
<option value="4">>4</option>
<option value="2">>2</option>
</select>
<br />
<select name="num2">
<option value="">Select One</option>
<option value="price">Price</option>
</select>
<select name="op2">
<option value="">Select One</option>
<option value="20000"><20000</option>
<option value="40000"><40000</option>
</select>
<br />
<div class="input-group-btn">
<button class="btn btn-default" type="submit" name="search_btn"><i class="glyphicon glyphicon-search"></i> Search</button>
</div>
</form>
用于处理选定值并添加到查询的服务器端代码。
if(isset($_POST['search_btn'])){
$conditons = array();
if(isset($_POST['Num'])){
$conditons[] = '`people` = "'.$_POST['Num'].'"';
}
if(isset($_POST['op'])){
$conditons[] = '`option` < '.$_POST['op'];
}
if(isset($_POST['price'])){
$conditons[] = '`price` = '.$_POST['price'];
}
if(isset($_POST['op2'])){
$conditons[] = '`op2` < '.$_POST['op2'];
}
$conditons = implode(' & ', $conditons);
echo $query = 'select * from hotel where '.$conditons;
}
您可以在条件中更新您的真实字段名称。添加条件后,查询结果为 -
select * from hotel where `people` = "numofpeople" & `option` < 4 & `op2` < 20000
关于php - 如何在mysql查询中组合多个下拉列表值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40825485/