【问题标题】:How to Change Multiple Checkbox Query to Multiple Chosen jQuery?如何将多个复选框查询更改为多个选择的 jQuery?
【发布时间】:2015-11-12 00:25:53
【问题描述】:

我有一个多复选框查询,如下所示

  <span style="width:276px;display:inline-block;">&nbsp;<input type="checkbox" name="check_list[]" value="sub_category_id = '1''">Name1</span>

  <span style="width:276px;display:inline-block;">&nbsp;<input type="checkbox" name="check_list[]" value="sub_category_id = '2'">Name2</span>

  <span style="width:276px;display:inline-block;">&nbsp;<input type="checkbox" name="check_list[]" value="sub_category_id = '3'">Name3</span>

  <span style="width:276px;display:inline-block;">&nbsp;<input type="checkbox" name="check_list[]" value="sub_category_id = '4'">Name4</span>

然后

 <?php
 $names = implode(' or ', (array)$_POST['check_list'.$i]);
 echo $names;
 ?>

我得到了部分查询。

sub_category_id = '1'' or sub_category_id = '2' or sub_category_id = '3' or sub_category_id = '4'

使用选定的 Jquery,我可以检索 MySQL 数据(Name1、Name2、Name3、Name4),如下所示:

   <select name="sub_category_id[]" id="sub_category_id[]" multiple     class="chosen-select" tabindex="8">
   <option value="">Selecione...</option>
    <?php foreach ($arrEstados as $value => $name) {
      echo "<option value='{$value}'>{$name}</option>";
    }?>
  </select>

  $names = $_POST['sub_category_id'];
  $query=implode('sub_category_id=', $names);
  echo $query;

但是缺少“或”。我没有很好的 PHP 技能,所以我问:这是获取我的查询的正确方法吗?我没有使用 PDO 或 mysqli。

【问题讨论】:

  • 那么$arrEstados 是在哪里/如何产生的?
  • 了解IN clause。然后你可以摆脱那些“或”的东西和选项标签的值可以只是数字。
  • Marc 是用于检索数据的 mysql 查询: $sql = "SELECT * FROM sub_categories where cat_id=1 order by sub_cat_name"; $res = mysql_query($sql, $con); $num = mysql_num_rows($res); for ($i = 0; $i

标签: php jquery mysql jquery-chosen


【解决方案1】:

更改您的 html 选择元素以遵循以下内容:

<select name="check_list[sub_category_id][]" id="sub_category_id[]" multiple     class="chosen-select" tabindex="8">
    <option value="">Selecione...</option>
    <?php
        foreach ($arrEstados as $value => $name) {
            echo "<option value='{$value}'>{$name}</option>";
        }
    ?>
</select>

这样做会在你的 $_POST 中创建一个这样的数组:

$_POST => Array
    (
        [check_list] => Array
            (
                [sub_category_id] => Array
                    (
                        [0] => 2
                        [1] => 3
                    )

            )

    )

然后像这样更改您的 PHP:

<?php
        $names = isset($_POST['check_list']) && isset($_POST['check_list']['sub_category_id']) ? $_POST['check_list']['sub_category_id'] : NULL;
        $query = "SELECT * FROM tablename WHERE ";
        if(!is_null($names)){
            foreach($names as $i => $name){
                if($i !== 0){
                    $query .= " OR ";
                }
                $query .= "sub_category_id = '$name'";
            }
        }
        echo($query);
        //Output: SELECT * FROM tablename WHERE sub_category_id = '2' OR sub_category_id = '3'   
    }
?>

您可能需要更改查询以适合您的应用程序,但这将有助于您朝着正确的方向前进。

【讨论】:

    【解决方案2】:

    正如 Martin 所建议的那样,http://www.tutorialspoint.com/mysql/mysql-in-clause.htm 采用了简单的方法来解决它。这就是我所做的:

     <select chosen still the same...>
    
     $sub_category_1 = $_POST['sub_category_id'];
     $query=implode(',', $sub_category_1);
    
     $sql = "Select * from table WHERE sub_category_id IN($query)";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多