复选框未正确获取值

时间:2016-03-23 18:48:59

标签: php checkbox

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

<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;这意味着它根本没有获得价值。我该如何解决这个问题?

2 个答案:

答案 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”]。