2016-03-23 13 views
0

Ich mache ein Baseball Quiz und eine der Fragen erfordert die Verwendung von Kontrollkästchen, da es mehrere Antworten hat. Die Frage ist irrelevant, aber hier ist das, was ich für den Code haben:Checkbox erhält keine Werte richtig

<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 

Sagen wir, die richtige Antwort ist Spieler 2, 3 und 6. Hier ist, was ich tue:

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

I Ich habe versucht, dies durch ausgewählte Spieler 2, 3 und 6 zu testen, was die richtigen Antworten sind, aber mein Programm sagte immer noch, dass meine Antwort falsch war. Ich habe versucht, Debugging-Anweisungen zu setzen, um zu sehen, ob die Werte richtig gespeichert werden und nicht. Zum Beispiel als ich versuchte zu sagen:

if(isset($_POST['Player 2'])) { 
    $p2 = $_POST['Player 2']; 
} 
..... 
print "<p>The answer is " . $p2 . ".</p>"; 

Es würde die Zeichenfolge "Die Antwort ist." was bedeutet, dass es überhaupt keinen Wert bekommt. Wie kann ich das beheben?

+0

Führen Sie einen var_dump für $ _POST aus. Wird das Formular per POST übermittelt? – j08691

+1

Verwenden Sie 'Player_1' oder' Player1' – fusion3k

+0

Ich denke, es wird über POST gesendet. Wie kann ich nachfragen? Wo würde ich 'var_dump' hinstellen? Zu Beginn der 'process_form()' Funktion? – GenericUser01

Antwort

0

Stellen Sie sicher, dass Sie das Formular per POST-Methode nicht mit GET senden. Versuchen Sie, Dump Werte mit:

var_dump($_POST); 
+0

"Stellen Sie sicher, dass Sie das Formular per POST senden ..." Was macht diese Zeile? '

'? Wenn nicht, wie würde ich sicherstellen, dass ich das tue? – GenericUser01

+0

Ja. Das ist die Linie und es scheint richtig zu sein. Vermeiden Sie Leerzeichen in der Namenseigenschaft. Verwenden Sie "Player1" anstelle von "Player 1". –

0

„Spieler 1“ als Namensattribut ist gültig HTML, aber PHP wandelt Räume in Unterstrichen für Variablennamen von HTML-Formularen.

Also müssen Sie nach Player_1 anstelle von Player 1 oder, besser, um Ihre Checkbox zu Player1 umzubenennen.

Von PHP Docs:

Punkte und Leerzeichen in Variablennamen werden zu Unterstrichen konvertiert. Zum Beispiel < input name = "a.b"/> wird $ _REQUEST ["a_b"].

+0

Ignoriere meinen letzten Kommentar. Ich habe das 'Name' Feld für alle auf keine Leerzeichen geändert und es funktioniert jetzt richtig! Vielen Dank. – GenericUser01

Verwandte Themen