【问题标题】:maintain checkbox which were checked after submit维护提交后选中的复选框
【发布时间】:2016-03-14 04:11:35
【问题描述】:

我知道这里有“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 
            }
          }
       ?>

【问题讨论】:

    标签: php forms post checkbox checked


    【解决方案1】:

    "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">
    

    【讨论】:

    • 不,使用 $_SESSION 不会做任何事情,这就是我真正需要的,如果我刷新页面,请继续检查
    • 你要么意味着两件事——要么#1你没有用 session_start() 开始页面;所以这些值没有正确存储到会话数组或#2中你真的想通过Javascript处理这个(如果你正在寻找tick->然后F5 - 但如果我试图重新加载那就没有意义了页面恢复新鲜)。
    【解决方案2】:

    首先,复选框的值是$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"'; ?> />
    

    【讨论】:

    • 老兄,谢谢,但是当我检查刷新页面时,页面不支持,你知道为什么吗?
    猜你喜欢
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 2013-08-10
    • 2015-01-22
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多