复选框过滤无效

时间:2013-11-03 18:28:09

标签: php jquery checkbox pdo

我有几个复选框来过滤数据库的结果,但我有两个问题,第一个是我使用$_POST变量,当我点击刷新时,我得到一个确认表单提交对话框,我不希望因为用户可能多次点击刷新。

第二部分是,如果我用$_POST替换$_GET,我看不到确认消息,但复选框不起作用。任何人都有任何想法?

 <script type="text/javascript">  
    $(function(){
     $('.checkbox').on('change',function(){
        $('#form').submit();
        });
    });
  </script>


  <form id="id" method="post" action="">
 <input type="checkbox" name="new" class="checkbox" <?php if(isset($_POST['new'])) echo "checked"; ?>/> New<br>
 <input type="checkbox" name="used" class="checkbox" <?=(isset($_POST['used'])?' checked':'')?>/> Used<br>
 <input type="checkbox" name="ref" class="checkbox" <?=(isset($_POST['ref'])?' checked':'')?>/> Refurbished<br>
 </form>

 if(isset($_GET['page']))
        {
            $page = $_GET['page'];
        }
        else
        {
            $page = 1;
        }
        $options = array(
            'results_per_page'              => 2,
            'url'                           => 'products.php?search=' . urlencode($q) . '&amp;page=*VAR*',
            'db_handle'                     => $dbh
        );
            if (isset($_POST["ref"])) {
            $arguments[] = " condition LIKE '%refur%'  ";
           } 
           if (isset($_POST["new"])) {
            $arguments[] = " condition LIKE '%new%' ";
           } 
           if (isset($_POST["used"])) {
            $arguments[] = " condition LIKE '%use%' ";
           } 
          if(!empty($arguments)) {
          $str = implode(' or ',$arguments);
          $qry = "SELECT * FROM products where " . $str . " ORDER BY id desc";
          $paginate = new pagination($page, $qry, $options);
          echo $qry;
          }
          else {

           $paginate = new pagination($page, "SELECT * FROM products order by id desc", $options);
           }

1 个答案:

答案 0 :(得分:0)

这只是一个想法,使用经典/现代ajax方法进行提交。假设此页面名为jqpost.php:

<script>
$(document).ready(function () {
  $('.checkbox').on('change',function(){
    //$('#form').submit();
    var formdata = $("#form").serialize();
    $.post("jqpost.php", formdata, function(data) {
      $("#result").html("Post OK: " + formdata);
    });
  });
});
</script>

<form id="form" method="post" action="">
<input type="checkbox" name="new" class="checkbox" <?php if(isset($_POST['new'])) echo "checked"; ?>/> New<br>
<input type="checkbox" name="used" class="checkbox" <?=(isset($_POST['used'])?' checked':'')?>/> Used<br>
<input type="checkbox" name="ref" class="checkbox" <?=(isset($_POST['ref'])?' checked':'')?>/> Refurbished<br>
</form>

<div id="result"></div>

<?php
//...
?>

如果用户点击了一个复选框,jQuery会将数据发布到jqpost.php脚本。作为回报,#result div将提供状态文本。

因此,如果用户按下浏览器上的刷新按钮,则不会一次又一次地提交表单。