保持复选框以PHP格式检查

时间:2012-03-01 15:44:47

标签: php forms checkbox checked

我知道在出现错误时如何在表单提交时选中复选框,但我现在有一个不同的问题。我正在使用同名的复选框,人们可以点击1或多个。我希望它只保留用户检查填写的复选框,如果有问题,如果他们检查q1 A q1B而不是q1c我只想q1 A和Q1b在重新加载错误时显示已检查。现在,在出错时,将检查所有相同名称的复选框。我已经尝试将名称更改为q1 [],但这不起作用。你能看一下,让我知道如何解决这个问题吗?

这是我的代码。

    <tr>
<td style="width: 124px" class="style15">Tape Recorder<?php    if(isset($problems['tape[]'])) {?><font color="red">*</font><?php } ?></td>
<td class="style9"> 
    <input name="tape[]" id="tape1" type="checkbox" value="used before," <?php   if(isset($_POST['tape[]'])) echo "checked"; ?> 
  </td>
<td class="style9"> 
    <input name="tape[]" id="tape2" type="checkbox" value="helpful in past,"        <?php   if(isset($_POST['tape[]'])) echo "checked"; ?> </td>
<td class="style9"> 
    <input name="tape[]" id="tape3" type="checkbox" value="requesting from DACC" <?php if(isset($_POST['tape[]'])) echo "checked"; ?> </td>
<td class="style9"> 
    <input name="tape[]"  id="tape4" type="checkbox" value="NA" <?php if(isset($_POST['tape[]'])) echo "checked"; ?></td>
 </tr>
  <tr>
        <td style="width: 124px">Note Taker <?php if(isset($problems['note'])) {?>      <font color="red">*</font><?php } ?></td>
<td class="style9"> 
        <input name="note" type="checkbox" value="used before," <?php if(isset($_POST['note'])) echo "checked"; ?> 
</td>
<td class="style9"> 
    <input name="note" type="checkbox" value= "been helpful in the past," <?php if(isset($_POST['note'])) echo "checked"; ?> 
<td class="style9"> 
    <input name="note" type="checkbox" value= "requesting from DACC" <?php if(isset($_POST['note'])) echo "checked"; ?> 
<td class="style9"> 
    <input name="note" type="checkbox" value="NA" <?php if(isset($_POST['note'])) echo "checked"; ?> 
</tr>

3 个答案:

答案 0 :(得分:6)

快速而肮脏的解决方案是:

<input name="tape[]"  id="tape[]" type="checkbox" value="NA" <?php if(isset($_POST['tape']) && is_array($_POST['tape']) && in_array('NA', $_POST['tape'])) echo 'checked="checked"'; ?> />

为此,您需要明确更改每个不同答案的“NA”部分。虽然我会查看类似于重复复选框的循环或回调函数来确定是否回显checked=checked

答案 1 :(得分:0)

谢谢Code先生 这是我能够理解你的最终代码

$mailBody .= "They requested additional information on ...\n\n";
$mailBody .= $moreinfo = join("\n", $_REQUEST["moreinfo"]);
$mailBody .= "\n\n";
$mailBody .= "They also had this to say...\n\n";
$mailBody .= "$comments\n\n";

//页面上的代码

<input type="checkbox" name="moreinfo[selection1]" value="selection1" <?php if(isset($_POST['moreinfo']) && is_array($_POST['moreinfo']) && in_array('selection1', $_POST['moreinfo'])) echo 'checked="checked"'; ?> />  Selection 1<br>

<input type="checkbox" name="moreinfo[selection2]" value="selection2" <?php if(isset($_POST['moreinfo']) && is_array($_POST['moreinfo']) && in_array('selection2', $_POST['moreinfo'])) echo 'checked="checked"'; ?> />  Selection 2<br>

<input type="checkbox" name="moreinfo[selection3]" value="selection3" <?php if(isset($_POST['moreinfo']) && is_array($_POST['moreinfo']) && in_array('selection3', $_POST['moreinfo'])) echo 'checked="checked"'; ?> />  Selection 3<br>

我不在乎这看起来很疯狂,因为它有效。

答案 2 :(得分:-1)

您不需要为复选框设置相同的名称,仅用于单选按钮。

单选按钮属于一个组,因此它们必须具有相同的名称但值不同。但是,复选框可以为每个复选框指定不同的名称!因此,只需将每个复选框更改为不同的名称