0

除非勾选复选框,否则我的表单无法提交,我真的不确定这是为什么。

此外,如果选中该复选框,则无法更新数据库,则我正在使用的功能或查询没有问题,因为我已直接在数据库上检查过。

任何帮助将不胜感激,如果我可以提供更多信息,请随时提出任何问题

<?php
include 'core/init.php';
protect_page();
include 'includes/overall/header.php';
$page = $_GET['page'];
$email = $_GET['user'];
$p_id = project_id_from_project_name($page);
$supervisor = supervisor_from_email($email, $p_id);
$user_id = user_id_from_email($email);
?>
<h1>Add A User to the Project</h1>

<?php
if (isset($_GET['form_submit']) === true && empty($_GET['form_submit']) === false) {
    echo 'You\'re user has been added successfully!<br /><br />';
    echo '<a href="projects.php">Please click here to return to Your Projects</a>';
} else {
    if (empty($_POST) === false && empty($errors) === true) {
        $page = $_GET['page'];  
        $p_id = project_id_from_project_name($page);
        $supervisor_update = ($_POST['supervisor'] == 1) ? 1 : 0;


        $update_project_member_data = array(
            'project_id'            => "$p_id",
            'project_name'          => "$page",
            'project_member_id'     => "$user_id",
            'supervisor'            => "$supervisor_update"
        );

        update_project_member_data($p_id, $update_project_member_data);

        header('Location: update_user.php?page=' . $page .'&user=' . $email .'&form_submit=1');
        exit();

    } else if (empty($errors) === false) {
        echo output_errors($errors);
    }
?>
    <form action="" method="post">
        <ul>
            <li>
                Email Address: &nbsp; <?php echo $email ?>
            </li>
            <li>
                Set user as Supervisor?<br />
                <input name="supervisor" type="checkbox" <?php if ($supervisor == 1) {?> checked="checked"<?php }?>/>
            </li>
            <li>
                <input type="submit" value="Update User">
            </li>
        </ul>
    </form>

<?php 
}
include 'includes/overall/footer.php'; ?>
4

2 回答 2

1

我认为问题出在您的条件上:

empty($_POST) === false

由于您的表单非常基本,并且只有一个输入。$_POST 数组仅在检查该输入时才填充值。未选中它不会传递 $_POST 数组中的任何值。通常,提交按钮会传递一个值,但由于您没有“名称”属性,所以它没有。

您可以尝试将 name 属性添加到提交按钮,也可以在 FORM 元素中添加一个隐藏值,例如:

<input type="hidden" name="action" value="submitted" />
于 2013-04-19T04:52:46.627 回答
0

我认为这里发生的情况是,如果您不选中该框,则没有可发布的数据。您可以检查请求方法,$_SERVER['REQUEST_METHOD'] 而不是 empty($_POST)。

编辑:澄清一下,帖子发生了,但如果条件评估为假

于 2013-04-19T04:50:04.777 回答