2015-08-18 41 views
1

我有多個複選框的查詢,如下如何將多個複選框查詢更改爲多個選定的jQuery?

<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,I'm能夠檢索MySQL數據(名稱1,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。

+0

so where/how'$ arrEstados' generated? –

+0

瞭解[IN子句](http://www.tutorialspoint.com/mysql/mysql-in-clause.htm)。然後你可以擺脫那個「或」選項標籤的東西和價值可以只是數字。 –

+0

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); ($ i = 0; $ i <$ num; $ i ++){ $ dados = mysql_fetch_array($ res); $ arrEstados [$ dados ['sub_cat_id']] = $ dados ['sub_cat_name']; –

回答

0

改變你的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' 
    } 
?> 

您可能需要更改查詢以適合您的應用程序,但這將有助於讓您進入正確的方向ñ。

0

由於馬丁建議de 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)";