2016-03-23 103 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