除非勾选复选框,否则不会提交php表单

时间:2013-04-19 04:39:16

标签: php mysql

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

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

非常感谢任何帮助,如果我能提供更多信息,请随时提出任何问题

<?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'; ?>

2 个答案:

答案 0 :(得分:1)

我认为问题出在你所拥有的条件上:

empty($_POST) === false

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

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

<input type="hidden" name="action" value="submitted" />

答案 1 :(得分:0)

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

编辑:澄清,帖子发生但if条件评估为假