复选框中的未定义索引

时间:2013-08-16 02:42:09

标签: php mysql

<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条查询。

  3. 结果:我想要的是非常简单,复选框应该具有值= 1,其中未选中为0。

3 个答案:

答案 0 :(得分:0)

复选框仅在选中时通过表单传递值,如果您的表单未经选中复选框提交,则会导致$_POST['admin']无法关联。您需要使用isset($_POST['admin']);来测试是否存在此类密钥。

答案 1 :(得分:0)

提交表单时,POST数据中不包含复选框。在尝试对其进行任何其他操作之前,您需要致电isset($_POST['admin'])

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

答案 2 :(得分:0)

您可以在选项

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

快乐编码

相关问题