php - 如何在mysql查询中组合多个下拉列表值?

标签 php mysql

   <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/

相关文章:

MYSQL Null 和空值排序

php - 如何使用 PHP 在 mysql 表中使用变量

php - Joomla - 循环内的 MySQL 查询 - 我想这是不好的做法

php - 检查文件夹中的文件是否存在于我的 mysql 数据库中的最快方法是什么?

mysql - 数据库 SQL 查询问题错误 #1066

mysql - 如何从存储过程中的单个选择查询设置多个输出变量值

php - 未找到 Laravel OrderByRaw 列

php - mysql join 4 tables with last multiple group by 和 where class

php - 如何上传图像并将图像表id与帖子id连接(php mysql)

javascript - 有没有更合适的方法来使用 AJAX 处理错误?