2016-03-23 63 views
0

我正在做一个棒球测验,其中一个问题需要使用复选框,因为它有多个答案。现在的问题是无关紧要的,但这里是我的代码:复选框没有正确获取值

<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>"; 

它会打印字符串“答案是。”这意味着它根本没有获得价值。我怎样才能解决这个问题?

+0

在$ _POST上执行var_dump。表单是通过POST提交的吗? – j08691

+1

使用'Player_1'或'Player1' – fusion3k

+0

我认为它是通过POST提交的。我如何检查大小写?我会在哪里放var_dump?在'process_form()'函数的开始处? – GenericUser01

回答

0

确保您通过POST方法发送表单而不是GET。尝试将值转储为:

var_dump($_POST); 
+0

“请确保您通过POST发送表单......”这是该行的功能吗? '

'?如果没有,我如何确保我正在做这件事? – GenericUser01

+0

是的。这是线,它似乎是正确的。避免名称属性中的空格。使用“Player1”而不是“Player 1”。 –

0

作为name属性的“Player 1”是有效的HTML,但PHP将下划线中的空格转换为HTML Forms中的变量名称。

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

PHP Docs

点和空格变量名转换为下划线。例如<输入名称=“a.b”/ >变为$ _REQUEST [“a_b”]。

+0

不理我最后的评论。我将所有的'name'字段更改为无空格,现在它可以正常工作!谢谢。 – GenericUser01