2013-11-03 96 views
0

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

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

<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); 
      } 

回答

0

这只是一个想法,使用古典/现代阿贾克斯方法提交。假设这个页面被称为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将提供状态文本。

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