复选框未正确获取值


Checkbox not getting values correctly

我正在做一个棒球测试,其中一个问题需要使用复选框,因为它有多个答案。这个问题无关紧要,但以下是我对代码的看法:

<input type="checkbox" name="Player 1" value="Player 1" />Player 1
<input type="checkbox" name="Player 2" value="Player 2" />Player 2
<input type="checkbox" name="Player 3" value="Player 3" />Player 3
<input type="checkbox" name="Player 4" value="Player 4" />Player 4
<input type="checkbox" name="Player 5" value="Player 5" />Player 5
<input type="checkbox" name="Player 6" value="Player 6" />Player 6

假设正确答案是玩家2、3和6。以下是我正在做的事情:

if(isset($_POST['Player 2']) && isset($_POST['Player 3']) && isset($_POST['Player 6'])) {    // Check if 2, 3, and 6 are checked
   print "<p>Your answer is correct!</p>";
   $correct++;
} else {
   print "<p>Your answer is incorrect.</p>";
}

我试着通过选择正确答案的玩家2、3和6来测试这一点,但我的程序仍然说我的答案不正确。我试着放入调试语句,看看值是否正确存储,它们是否正确。例如,当我试图说:

if(isset($_POST['Player 2'])) {
   $p2 = $_POST['Player 2'];
}
.....
print "<p>The answer is " . $p2 . ".</p>";

它会打印字符串"答案是。"这意味着它根本没有得到值。我该怎么解决这个问题?

确保通过POST方法而不是GET发送表单。尝试使用转储值

var_dump($_POST);

"Player1"作为name属性是有效的HTML,但PHP会为HTML表单中的变量名转换下划线中的空格。

因此,您必须选中Player_1而不是Player 1,或者更好的是,将复选框重命名为Player1

来自PHP文档:

变量名称中的点和空格将转换为下划线。例如<input name="a.b"/>变为$_REQUEST["a_b"]。