我正在进行棒球测验,其中一个问题需要使用复选框,因为它有多个答案。这个问题无关紧要,但这就是我对代码的看法:
<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>";
它会打印字符串&#34;答案是。&#34;这意味着它根本没有获得价值。我该如何解决这个问题?
答案 0 :(得分:0)
确保通过POST方法发送表单而不是GET。尝试使用以下内容转储值:
var_dump($_POST);
答案 1 :(得分:0)
“播放器1”作为名称属性是有效的HTML,但PHP会在下划线中为HTML表单中的变量名称转换空格。
因此,您必须检查Player_1
而不是Player 1
,或者更好地将您的复选框重命名为Player1
。
来自PHP Docs:
变量名中的点和空格将转换为下划线。例如&lt; input name =“a.b”/&gt;变成$ _REQUEST [“a_b”]。