0

何を選択しても、すべてのチェックボックスに値 1 を割り当て、選択したチェックボックスを値 0 に変更しません。これは、構文の観点からは正しいコードですが、何をしなくてもデフォルトで 1 になります。選択したボックスの値を「0」に変更しない理由を確認してください

//Correct answer variables
$chkBox1 = '1';
$chkBox2 = '1';
$chkBox3 = '1';
$chkBox4 = '1';
$chkBox5 = '1';

if (isset($_POST['chkBox1'])) {

if ($chkBox1 == 'chkBox1Selected') {
$chkBox1 = '0';
}

}//End of chkBox1Selected logic


if (isset($_POST['chkBox2'])) {

if ($chkBox2 == 'chkBox2Selected') {
$chkBox2 = '0';
}

}//End of chkBox2Selected logic


if (isset($_POST['chkBox3'])) {

if ($chkBox3 == 'chkBox3Selected') {
$chkBox3 = '0';
}

}//End of chkBox3Selected logic
4

1 に答える 1

4

あなたのifステートメントは決して評価されませんtrue

1 つのチェックボックスを見てください。

$chkBox1 = '1';

if (isset($_POST['chkBox1'])) {
    if ($chkBox1 == 'chkBox1Selected') {
        $chkBox1 = '0';
    }
}

$chkBox1は に設定されて'1'おり、そこから変更されることはないため、 と等しくなることはありません'chkBox1Selected'

そうは言っても、チェックされたチェックボックスのみがサーバーに送信されるため、チェックボックスの値について心配する必要はありません。

理論的には、次のことができます。

if (isset( $_POST['chkBox1'])) {
    $chkBox1 = '0';
}

ただし、チェックボックスの値を読み取りたい場合は、次のようにする必要があります。

if (isset( $_POST['chkBox1'])) {
    if ($_POST['chkBox1'] == 'chkBox1Selected') {
        $chkBox1 = '0';
    }
}

または、より簡潔に:

if( isset( $_POST['chkBox1']) && ($_POST['chkBox1'] == 'chkBox1Selected')) {
        $chkBox1 = '0';
}
于 2012-07-02T16:53:28.240 に答える