2016-03-23 8 views
0

私は野球のクイズをしています。質問の1つに複数の回答があるので、チェックボックスを使用する必要があります。質問は無関係ですが、ここで私はコードを持っているものです。チェックボックスが正しく値を取得しない

<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

GETではなくPOSTメソッドでフォームを送信してください。

var_dump($_POST); 
+0

"POST経由でフォームを送信してください..."この行は何ですか? '

'?もしそうでなければ、私はそれをやっていることをどうやって確認しますか? – GenericUser01

+0

はい。それはラインであり、それは正しいようです。名前プロパティにスペースは入れないでください。 「Player 1」ではなく「Player1」を使用してください。 –

0

名前属性としての「プレーヤー1」は有効なHTMLですが、PHPはHTMLフォームの変数名のためにアンダースコアのスペースを変換します。

Player 1の代わりにPlayer_1をチェックするか、チェックボックスの名前をPlayer1に変更する必要があります。 PHP Docsから

:変数名で

ドットとスペースをアンダースコアに変換されます。たとえば、<入力名= "a.b"/>は$ _REQUEST ["a_b"]になります。

+0

最後のコメントは無視してください。私は 'name'フィールドを空白にしないように変更しました。ありがとうございました。 – GenericUser01

関連する問題