Hey zusammen,
ich bin dabei grad ein Frage-Antworten Spiel zu erstellen.
Ich habe nun eine Frage und es gibt dazu 4 Antworten. Nun muss der User in 4 Inputfelder die Antworten eintragen. Nachdem wird er das Formular absenden und dann wird ihm eine Rückmeldung gegeben.
Nun ist es so, dass die Frage sowie die richtigen Antworten in einem Array liegen, geordnert nach dem Schlüssel. Ich führe die Überprüfung ob die Antwort richtig ist mit einer for-schleife und den Arrays userAnswers und possibleAnswers durch. Wenn man die Antworten in der Reihenfolge einträgt wie diese im Array angeordnet sind dann kommt kein Fehler.
Fallbeispiele:
1. Nun kann es sein, dass der User die richtigen Antworten, aber in einer anderen Reihenfolge, eingibt. Somit entstehen trotz richtiger Antworten aufgrund der falschen Reihenfolge der Antworten Fehler.
Wie schaffe ich es denn, dass egal in welcher Reihenfolge der User die Frage beantwortet, dass die richtigen Antworten als richtig angesehen werden ?
2. Auch kann es sein, das die Antwort des Users kürzer ist als meine vorgegebene richtige Antwort aber das gleiche damit ausgedrückt wird.
Wie bekomme ich es hin, dass genau in solch einer Situation die Antwort des Users als richtig angesehen wird?
EDIT:
Frage 1 hat sich erledigt. Ich prüfe mit der Function in_array() ob die Userantwort im richtigeAntworten Array ist. Dort ist die Reihenfolge egal.
Frage 2 ist nurnoch offen.
Das ist mein bisheriger Code:
$questions = array("Welche Automarken gibt es?");
$possibleAnswers = array("BMW", "Ford", "Daimler", "Opel");
$errors = null;
if(isset($_POST["sendAnswers"])){
$userAnswers = filter_var_array($_POST["userAnswers"], FILTER_SANITIZE_STRING);
$errorKey = 1;
for($a = 0; $a < count($userAnswers); $a++){
if($userAnswers[$a] !== $possibleAnswers[$a]){
$errors["error" . $errorKey] = "Antwort " . $errorKey . " ist falsch!";
$errorKey += 1;
} else{
$errorKey += 1;
}
}
if(is_null($errors)){
$erfolgreich = "Sie haben die Frage richtig beantwortet. Gut gemacht!";
}
}
Alles anzeigen
Grüße,
Stef