使用 jquery ajax mysql 和 php 按复选框过滤数据

Posted

技术标签:

【中文标题】使用 jquery ajax mysql 和 php 按复选框过滤数据【英文标题】:filtet data by checkbox using jquery ajax mysql and php 【发布时间】:2016-07-21 01:29:40 【问题描述】:

我有一组动态的位置复选框

<?php foreach($qry_2 as $v2)  ?>
    <li class="checkbox">
        <label>
            <input type="checkbox" class="i-check" id="locality" name="locality[]" value="<?php echo $v2['outlet_locality'] ?>"><?php echo $v2['outlet_locality'] ?>
            <small class="location"><?php echo '('.$v2['outletCount'].')' ?></small>
        </label>
    </li>
<?php  ?>

我得到了大约 10 个输入复选框值 我想使用jQuery根据复选框(多选)过滤内容并将数据发送到filter.php以作为json数据检索

$('input#locality').change(function () 
    var locality = [];
    $(':checkbox:checked').each(function (i) 
        locality.push($(this).val());
    );

    $.post("php/filter.php", name: locality, function(data)

    );
);

当我选中复选框时,我得到了单独的值而不是数组,那么我怎样才能获取选中的多个复选框的数组值以发送到 filter.php 并从中检索数据 我的过滤器.php

$qry_1 = array();

$checkbox1 = $_POST['name'];  
$chk = "";   
foreach($checkbox1 as $chk1)  
  
    $chk .= $chk1.",";  

$sql_1 = "SELECT  p.id,p.outlet_id,p.offer_title,p.original_price,p.discount,p.discount_price,p.offer_image,p.offer_details,o.outlet_id,o.outlet_title,o.outlet_locality,o.segment_type FROM products as p,outlets as o WHERE p.outlet_id=o.outlet_id AND o.outlet_locality='$chk'"; 
$qry_1 = sel_qry($sql_1);
foreach($qry_1 as $v)

    $filterloc[] = array('title'=>$v['outlet_title'],'cat_id'=>$v['outlet_id']);

echo json_encode($filterloc);

我得到空值请指导我

【问题讨论】:

通过在 jquery/javascript 中使用唯一 id 来避免在循环中引用 html 元素。在您的情况下,它的 ``id="locality"。要么动态生成这些 id,要么更好地使用一个类。如果您进行此更改,那么它可能会解决您的问题。 【参考方案1】:

尝试移动它

$.post("filter.php",  name: locality[i] , function (data) 
  alert(data);
);

到每个之外。即:

$('input#locality').change(function () 
  var locality = [];
  $(':checkbox:checked').each(function (i) 
    locality.push($(this).val());
    alert(locality[i])
  );

  $.post("filter.php",  name: locality , function (data) 
    alert(data);
  );
);

(当然,假设您的后端需要一个数组)

【讨论】:

它发送 name[]:location1 name[]:location2 那么我如何在我的 filter.php @geo1302 中获取这个值 $qry_1=array(); $checkbox1=$_POST['name']; $chk=""; foreach($checkbox1 as $chk1) $chk .= $chk1.","; $sql_1="SELECT p.id,p.outlet_id,p.offer_title,p.original_price,p.discount,p.discount_price,p.offer_image,p.offer_details,o.outlet_id,o.outlet_title,o.outlet_locality, o.segment_type FROM products as p,outlets as o WHERE p.outlet_id=o.outlet_id AND o.outlet_locality='$chk'"; $qry_1=sel_qry($sql_1); foreach($qry_1 as $v) $filterloc[]=array('title'=>$v['outlet_title'],'cat_id'=>$v['outlet_id']); 回声 json_encode($filterloc);我有空值请指导我@geo1302 对不起,我对 PHP 的了解几乎没有。我在 Javascript 部分提供了帮助,但是通过一些搜索,您可以像这样访问数组: $myArray = $_REQUEST['name']; ?>【参考方案2】:

试试这个代码。

HTML

<li class="checkbox">
   <label>
       <input type="checkbox" class="i-check" id="locality" name="locality[]" value="<?php echo $v2['outlet_locality'] ?>"><?php echo $v2['outlet_locality'] ?>
       <small class="location"><?php echo '('.$v2['outletCount'].')' ?></small>
   </label>
</li>

JS

$('input.i-check').change(function () 
    var locality = [];
      $(':checkbox:checked').each(function (i) 
            locality.push($(this).val());
      );

      $.post("jquery1.php", name: locality, function(data)

      );
);

使用类i-check代替id locality

【讨论】:

以上是关于使用 jquery ajax mysql 和 php 按复选框过滤数据的主要内容,如果未能解决你的问题,请参考以下文章

复选框状态更改时如何更新mysql字段?使用 jquery (ajax)、php 和 mysql

使用 PHP、MySQL、Jquery 和 Ajax 创建 5 星评级系统

使用 jquery 和 ajax 显示来自 mysql 的数据

使用 Jquery、AJAX 和 PHP 从 MySQL 数据库中检索数据

jquery封装好的ajax方法

使用 PhoneGap、AJAX 和 JQuery Mobile 连接到 MySQL 数据库