0

我正在尝试创建逻辑以查看选择了哪个复选框(在 5 个可能的复选框中),如果选中,则为其分配值 0。如果未选择,我将为其分配值 1。正在进行的代码片段突出显示这但是在我的 else 语句中引发了解析错误,我无法弄清楚原因。//检查哪个复选框被标记为正确答案

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

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

if ($chkBox1 == 'chkBox1Selected') {
$chkBox1 = '0';
                }
else{
$chkBox1 = '1';
}
}//End of chkBox1Selected logic
4

2 回答 2

0

您不了解复选框的工作原理。如果在发布前取消选中复选框,则不会在发布时设置它。

因此,您的代码中唯一存在的条件每个值都将显示为1,因为它们不能被覆盖。

拿这个片段试试看。它动态循环您需要的变量数量,并根据提交的值分配值。

$_POST['chkBox4'] = 'test';

for( $i = 1; $i <= 5; $i++ )
{
    $name = 'chkBox' . $i;
    $$name = !isset( $_POST[$name] ) ? 0 : $_POST[$name];
}

print $chkBox2 . ' // '. $chkBox4;

http://codepad.org/51RotnCf

于 2012-07-02T16:57:09.903 回答
-2

好的,我从语法的角度来看它可以工作,但是现在无论选择什么,它仍然为所有复选框分配值 1,而不是将选定的复选框更改为值 0。这是正确的新代码从语法的角度来看,但无论如何默认为 1:

//检查哪个复选框被标记为正确答案

//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


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

if ($chkBox4 == 'chkBox4Selected') {
$chkBox4 = '0';
}

}//End of chkBox4Selected logic

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

if ($chkBox5 == 'chkBox5Selected') {
$chkBox5 = '0';
}

}//End of chkBox5Selected logic
于 2012-07-02T16:30:50.447 回答