默认设置$_POST复选框用于PHP搜索


Setting $_POST checkboxes by default for PHP search

我有3个复选框用于搜索

<input type="checkbox" onChange="this.form.submit()" ',$var1 ? ' class="checkon" checked="checked"' : '','name="c1" value="c1">
<input type="checkbox" onChange="this.form.submit()" ',$var2 ? ' class="checkon" checked="checked"' : '',' name="c2" value="c2">';
<input type="checkbox" onChange="this.form.submit()" ',$var3 ? ' class="checkon" checked="checked"' : '',' name="c3" value="c3">';

我希望它们在默认情况下都是开启的,但是如果我将它们设置为开启:

$_POST['c1'] = 'on';

那么当我取消复选框时,它仍然打开?如何在默认情况下打开它,但在取消勾选时关闭它?

我不知道为什么你有一个onChange事件与这些输入。您应该让用户选中或取消选中他们想要的任何框,然后一起提交所有数据。然后执行if(isset($_POST['c1'])){//Box已被选中}。也有checked="checked"只是作为一个HTML属性(所以<input type="checkbox" name="c1" value="on" checked="checked" />),而不是做一个简短的if语句在onChange事件。

我将这样做:

<form action="" method="post">
  <fieldset>
     <input type="checkbox" name="c1" value="on" <?php if (isChecked('c1')) echo 'checked="checked"'; ?> />
     <input type="checkbox" name="c2" value="on" <?php if (isChecked('c2')) echo 'checked="checked"'; ?> />
     <input type="checkbox" name="c3" value="on" <?php if (isChecked('c3')) echo 'checked="checked"'; ?> />
     <input type="submit" name="submit" value="Go" />
  </fieldset>
</form>
<?php
    function isChecked($name) { //Darkbee's edit
        return empty($_POST) || isset($_POST[$name]);
    }
   if(isset($_POST['submit'])){
      if(isset($_POST['c1'])){
         //Checkbox1 was checked when the form was submitted, code goes here
      }
      //Do the same for c2 & c3 as necessary
   }
?>

希望这有帮助!!