Php 选择带有范围的下拉列表,并在数据库中搜索介于
我是这个领域的新手,所以请不要对我苛刻。这看起来很简单,但我想不出来。所以,我有下拉选择,比如:Php 选择带有范围的下拉列表,并在数据库中搜索介于,php,mysql,Php,Mysql,我是这个领域的新手,所以请不要对我苛刻。这看起来很简单,但我想不出来。所以,我有下拉选择,比如: <select name="mode" id="mode"> <option value="None">All</option> <option value="300-400">Inside</option> <option value="200-299">Outside</option> &
<select name="mode" id="mode">
<option value="None">All</option>
<option value="300-400">Inside</option>
<option value="200-299">Outside</option>
</select>
如果我选择
Inside
在值300和400之间搜索,如何更改查询?您可以将if-else
与explode()
和list()
正如你在评论中所问:-
$cMode ='';
if($mode == "None"){
$cMode = 'LIKE "%"';
}else{
list($start,$eand) = explode('-',$mode);
$cMode ="BETWEEN $start AND $end";
}
$query = "SELECT * FROM sections WHERE code $cMode";
您可以使用
if and else
条件动态生成$cMode
,如下所示:
$cMode='';
if($mode == "None"){
$cMode = 'LIKE "%"';
}else{
$arr = explode('-',$mode);
$cMode ="BETWEEN $arr[0] AND $arr[1]";
}
$query = "SELECT * FROM sections WHERE code $cMode";
有关更多详细信息我还不太了解您的要求,这是一个如何使用过滤器从行打印数据的示例
<form action="PAGE.php" method="POST" id="users_selection">
<select name="mode" id="mode">
<option value="None">All</option>
<option value="300-400">Inside</option>
<option value="200-299">Outside</option>
</select>
<input type="submit" value="choose" name="choosing_user">
</form>
<?php
$servername = "";
$susername = "";
$spassword = "";
$dbname = "";
$conn = mysqli_connect($servername, $susername, $spassword, $dbname);
$mode = $_POST['mode'];
$sql = "SELECT * FROM sections";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$MYSQL_data = $row['data'];
if($mode=="None"){
echo '<p>'.$MYSQL_data.'</p>';
}else if($mode=="300-400"){
if($MYSQL_data>299 && $MYSQL_data <401){
echo '<p>'.$MYSQL_data.'</p>';
}
}else if($mode=="200-299"){
if($MYSQL_data>199 && $MYSQL_data <300){
echo '<p>'.$MYSQL_data.'</p>';
}
}
}
}
?>
全部的
在…内
外面
300-400是以字符串形式存储在数据库中还是以整数形式存储?它们是以整数形式存储的。表中的每一行都是单整数。。300, 301,302.. ETC请参阅下面的答案,它会有帮助的。谢谢,但有些地方不正确,因为它没有返回任何内容。echo$query;并尝试直接在数据库中运行感谢您的帮助。我会用上面的答案。是的,这会对sameThanks有很大帮助。这两个例子都很好用,但我更喜欢第二个例子,其中有一个查询。@Ivanov很乐意帮助您:):)如果选项在选择框中增加,会发生什么。您的代码对于处理任何数量的选项都是低效的。它仅限于3个选项。请尝试学习如何以通用而非特定的方式解决问题。ThanksHi@AlivetoDie,我在5分钟内完成了这段代码,因为我离开之前没有多少时间了。我宁愿给他的问题一个有效的答案,而不是修改更多的东西和迟到,但我很高兴以后能做得更好
$cMode='';
if($mode == "None"){
$cMode = 'LIKE "%"';
}else{
$arr = explode('-',$mode);
$cMode ="BETWEEN $arr[0] AND $arr[1]";
}
$query = "SELECT * FROM sections WHERE code $cMode";
<form action="PAGE.php" method="POST" id="users_selection">
<select name="mode" id="mode">
<option value="None">All</option>
<option value="300-400">Inside</option>
<option value="200-299">Outside</option>
</select>
<input type="submit" value="choose" name="choosing_user">
</form>
<?php
$servername = "";
$susername = "";
$spassword = "";
$dbname = "";
$conn = mysqli_connect($servername, $susername, $spassword, $dbname);
$mode = $_POST['mode'];
$sql = "SELECT * FROM sections";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$MYSQL_data = $row['data'];
if($mode=="None"){
echo '<p>'.$MYSQL_data.'</p>';
}else if($mode=="300-400"){
if($MYSQL_data>299 && $MYSQL_data <401){
echo '<p>'.$MYSQL_data.'</p>';
}
}else if($mode=="200-299"){
if($MYSQL_data>199 && $MYSQL_data <300){
echo '<p>'.$MYSQL_data.'</p>';
}
}
}
}
?>