维护提交后检查的复选框

时间:2015-12-09 01:55:05

标签: php forms post checkbox checked

我知道这里有“PHP keep checkbox checked after submitting form”,但该线程并没有解决我的问题,因为我有多个复选框,我需要的是当你选中一个复选框时,请在提交后保持检查。

目前使用此代码没有任何反应,我尝试了另一种方式但是当我选中“id7”复选框时,所有复选框都会被选中。

我必须知道我给它的id检查了哪个复选框,但我不知道如何。

while ($fila = mysql_fetch_array($rs)) {
    echo utf8_encode("
            <tr>
              <td>
                ".$fila['title']."
              </td>
              ");?>
              <td>
                <input type="checkbox" name="checklist[]" value="<?php echo htmlspecialchars($fila['id']); ?>" <?php if(isset($_POST['checklist[]']) && is_array($_POST['checklist[]']) && in_array('$fila', $_POST['checklist[]'])) echo 'checked="checked"'; ?> />
              </td>
              <?php 
            }
          }
       ?>

2 个答案:

答案 0 :(得分:1)

首先,复选框的值为$fila['id'],因此在您进行检查时,请使用$fila['id']代替$fila。此外,当PHP接收名称中带有[]的数组输入字段时,[]将被删除,以便正确的POST变量为$_POST['checklist']

尝试更改此行:

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

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

答案 1 :(得分:0)

“name”就像一个变量名 - 通过使用checklist [],你将数组定义为变量。 为什么不恰当地命名每个复选框?提交表单时,使用$ _POST的内容将每个变量设置为用户的$ _SESSION。

如果刷新页面,请使用$ _SESSION中的值来确定是否应勾选复选框。像(未经测试)的东西:

 <input type="checkbox" name="vehicle" value="Bike" 
<?php if (isset($_SESSION['bike_checked']) echo 'checked'; ?>> I have a bike<br>
 <input type="checkbox" name="vehicle" value="Car" 
<?php if (isset($_SESSION['car_checked']) echo 'checked'; ?>> I have a car<br>
 <input type="submit" value="Submit">