Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 选择带有范围的下拉列表,并在数据库中搜索介于_Php_Mysql - Fatal编程技术网

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>';
                }
            }
        }
    }
?>