我的表单无法提交,除非勾选复选框,我真的不确定为什么会这样。
此外,如果勾选了复选框,则无法更新数据库,我正在使用的函数或查询没有问题,因为我直接在数据库上检查过。
非常感谢任何帮助,如果我能提供更多信息,请随时提出任何问题
<?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: <?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'; ?>
答案 0 :(得分:1)
我认为问题出在你所拥有的条件上:
empty($_POST) === false
由于您的表单非常基本,只有一个输入。只有在选中该输入时,才会使用值填充$ _POST数组。未选中它不会传递$ _POST数组中的任何值。通常,提交按钮会传递一个值,但由于你没有“name”属性,所以没有。
您可以尝试将name属性添加到提交按钮,也可以只在FORM元素中添加隐藏值,例如:
<input type="hidden" name="action" value="submitted" />
答案 1 :(得分:0)
我认为这里发生的事情是,如果您不选中该框,则无法发布数据。您可以检查请求方法$ _SERVER ['REQUEST_METHOD']而不是空($ _ POST)。
编辑:澄清,帖子发生但if条件评估为假