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

フォームは非常に基本的で、入力は 1 つしかないためです。$_POST 配列には、その入力がチェックされたときにのみ値が入力されます。チェックを外すと、$_POST 配列に値が渡されません。通常、送信ボタンは値を渡しますが、そこに「名前」属性がなかったため、値は渡されません。

送信ボタンに name 属性を追加するか、次のような FORM 要素内に非表示の値を追加してみてください。

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

ここで起きていることは、チェックボックスをオンにしないと投稿するデータがないということだと思います。empty($_POST) の代わりに $_SERVER['REQUEST_METHOD'] のリクエスト メソッドを確認できます。

編集:明確にするために、投稿は行われますが、if条件はfalseと評価されます

于 2013-04-19T04:50:04.777 に答える