2016-03-28 8 views
0

Dank der Hilfe und wertvollen Informationen von Stack Overflow-Mitgliedern bin ich kurz davor, mein Quizprojekt zu beenden. Ich habe jedoch noch ein paar Fragen in Bezug auf den letzten Schliff des Projekts. Bevor ich anfange, möchte ich einen kurzen Hintergrund zu meinem Quizprojekt geben.Speichern der Formulardaten und Verwenden dieser Formulardaten zum Umleiten zu einer richtigen URL

Das Quiz besteht aus 10 Fragen. Jede Frage ist entweder eine Mehrfachauswahl oder ein Y/N, bei dem einfach Optionsfelder und eine Antwortschaltfläche verwendet werden, die die Informationen übermittelt. Der Code enthält sowohl JavaScript als auch PHP und vielleicht später auch Ajax. Was es bisher tun kann (wenn es genau befolgt wird) ist, dass, wenn der Benutzer die erste Seite zur Beantwortung der ersten Frage eingibt, ein Optionsfeld auswählt und den Antwortknopf drückt, das Formular absendet und den entsprechenden Text druckt, je nachdem, ob dies der Fall war richtig oder falsch. Dieser Teil funktioniert gut, zumindest für mich im Moment.

Was nicht gut funktioniert, sind zwei Dinge. Ich bin in der Lage zu inkrementieren und sogar den erhöhten Wert auf der Seite zu zeigen (obwohl es in der letzten Iteration nicht angezeigt wird) aber wenn die Seite aktualisiert wird, können Sie den gleichen Prozess auf der ersten Seite erneut durchlaufen und erhöhen total korrekte Variable. Dies bedeutet, dass Sie als Benutzer die gesamte korrekte Variable erhöhen können, ohne die erste Frage überhaupt zu verlassen (überhaupt nicht gut). hier

Dies ist mein Code:

foreach ($correctAns as $key => $answer) 
{ 
    if (!empty($_POST[$key])) 
    { 
     if ($_POST[$key] == $answer) 
     { 
      print $correct[$index]; 
      $_SESSION["totalCorrect"]++; 
      print $_SESSION["totalCorrect"]; 
     } 
     else if($_POST[$key] != $answer) 
     { 
      print $incorrect[$index]; 
      print "0"; 
     } 
    } 
    $index++; 
}; 

Das Ziel ist es, die Gesamt richtige Variable von jeder Seite und auf der Grundlage, wie viele richtig waren, nehmen sie an einem von zwei Seiten zu erhöhen. Wenn ihre gesamte korrekte Variable beispielsweise kleiner als 7 ist, werden sie auf eine Wiederholungsseite umgeleitet. Wenn es gleich oder größer als 7 war, werden sie zur Erfolgsseite weitergeleitet. Hier

ist ein Beispiel für die Formulareinreichung:

<form> 
    <fieldset> 
     <legend>Question 1</legend> 
      <input type="radio" name="answer1" value="a" id="1a"><label for="1a" > A.</label> 
      <br> 
      <input type="radio" name="answer1" value="b" id="1b"><label for="1b"> B.</label> 
      <br> 
      <input type="radio" name="answer1" value="c" id="1c"><label for="1c"> C.</label> 
      <br> 
      <input type="radio" name="answer1" value="d" id="1d"><label for="1d"> D.</label> 
    </fieldset> 
      <input type="button" id="answer" class="" value="ANSWER"> 
</form> 

Die Hauptsache ich sperren will, ist, dass, wenn der Benutzer ein Optionsfeld und klickte auf der Antworttaste ausgewählt hat, wird dieser Wert gespeichert auf meine PHP-Datei. Wenn der Benutzer bis jetzt 3 richtige Antworten hat, sollte er diese 3 richtigen Antworten behalten. Es wird alles ausgewertet, wenn der Benutzer alle 10 Fragen beantwortet, nachdem er auf den Absendenknopf auf Frage 10 geklickt hat.

Ich habe in zerstörende Formulardaten für eine Sitzung untersucht und eine andere PHP-Akte benutzt, um umzuleiten, aber ich bin in einigen Bereichen immer noch verwirrt. Wenn sich der Benutzer beispielsweise in Frage 4 befindet und aus irgendeinem Grund entscheidet, die Seite zu aktualisieren, werden die Formulardaten der Fragen 1-3 ebenfalls gelöscht?

Lassen Sie mich wissen, ob es noch etwas gibt, was ich anbieten oder klären kann.

Antwort

0

Ich sehe, dass Sie eine Sitzung verwenden, verwenden Sie einfach eine Sitzungsvariable, um die erreichte Frage zu speichern, und eine andere Sitzung, um den Zähler der richtigen Antwort zu speichern.

Dann in der Kopfzeile jeder Seite, durch PHP-Skript überprüfen, welche Frage der Benutzer erreicht hat.

<?php 
session_start(); 
if(!$_SESSION['question_id']){ 
$_SESSION['question_id'] = 1; 
$_SESSION['correct_answers'] = 0; 
} 

$question_id = $_SESSION['question_id']; 

// select question where question_id = $question_id 
// select all choices and correct answer ($correct_answer) 
// print the question with the choices 

if(isset $_post['submit']){ 
if($correct_answer == $_POST['choice']){ 
$_SESSION['correct_answers']+=1; 
$_SESSION['question_id']+=1; 
} 
} 
+0

Also vielleicht so etwas: $ _SESSION ['answer1'] == $ ans1. Sollte es die ID der gespeicherten Form sein? – Wolfrum

+0

Die ID des gespeicherten Formulars wird bei jedem Senden erhöht, beginnend mit 1 als erste Frage, und wenn der Benutzer eine Frage einreicht und Sie nach der Antwort suchen, können Sie der Sitzung 1 hinzufügen. –

+0

Bitte lesen Sie die bearbeitete Antwort –