0
<form method="POST" action="<?php $_SERVER['PHP_SELF']; ?>">
    <table border="1" cellpadding="4">
        <tr>
            <th>Id</th>
            <th>Name</th>

        </tr>
        <?php
        include('connect.php');
        $getQuery = "SELECT id,username,admin FROM tutorial_users ORDER BY id ASC";
        $getResult = mysql_query($getQuery) or die("Query not executed");
        while (list($id, $userName, $admin) = mysql_fetch_row($getResult)) {
            ?>
            <?php
            $checked = ($admin == 1) ? 'checked="checked"' : '';
            ?>
            <tr align="center">
                <td><?php echo $id; ?></td>
                <td><?php echo $userName; ?></td>
                <td><?php echo "<input type='checkbox' name='admin[]' value='$id' $checked>"; ?></td>
            <?php } ?>
        <tr>
    </table>
    <p>
        <input type="submit" name="submit" value="Update Role">
    </p>
</form>
<?php
$updated = FALSE;
if (isset($_POST['submit'])) {
    $admin = $_POST['admin'];
    $admin = join(",", $admin);
    $admin = "(" . $admin . ")";
    $defaultQuery = "UPDATE tutorial_users SET admin=0";
    $defaultResult = mysql_query($defaultQuery);
    $upQuery = "UPDATE tutorial_users SET admin=1 WHERE id IN $admin";
    echo $upQuery;
    $upResult = mysql_query($upQuery);
    $updated = TRUE;
}
?>

在上面的代码中,我有两个问题:

  1. 假设我希望取消选中每个复选框,然后当我按下提交时,它给了我undefined index $admin,我该如何解决这个问题?

    当我检查至少一个框并将值传递给 POST 数组时,它工作正常。

  2. 其次,我想知道这是实现结果的好方法还是我们可以有其他方法?我个人感觉很糟糕,因为如果我有 1000 条记录,那么一一更新 2 个查询将花费大量时间。

结果:我想要的很简单,选中的框应该有值 = 1,而未选中的有 0。

4

3 回答 3

0

复选框仅在选中时与表单一起传递值,如果您的表单在未选中复选框的情况下提交,则将导致$_POST['admin']不关联。您将需要使用 测试此类密钥的存在isset($_POST['admin']);

于 2013-08-16T02:46:32.467 回答
0

提交表单时,复选框不包含在 POST 数据中。isset($_POST['admin'])在尝试用它做任何其他事情之前,您需要先打电话。

此外,在旁注中,您需要查看未弃用的 mysqli 函数或 PDO。mysql_* 函数已被弃用并将被删除。

于 2013-08-16T02:47:43.943 回答
0

你可以在你的选择中尝试我的方式

 <option value="the_value_of_option" <?php if(isset($_POST['something']) && ($_POST['something'] == 'the_value_of_option')){echo "selected";}?> >Label of option</option>

快乐编码

于 2017-07-27T12:35:49.243 回答