Hallo Dr. Leiner
hier nochmal meine Fragen bezüglich der Punkteauswertung.
Eine einfache Auswertung hat bei mir gut funktioniert, nicht jedoch die Mehrfachauswahl.
Folgenden Code habe ich genutzt:
// Definition der Fragen und der korrekten Antworten
// Es werden nur jene Items definiert, die auch überprüft werden sollen
$fragen = [
// In der Frage AB01 müssen 1 und 2 angekreuzt sein, 3 und 4 dürfen nicht angekreuzt sein
'M101' => [1 => 1, 2 => 1, 3 => 2, 4 => 1, 5 => 1],
'M102' => [1 => 1, 2 => 1, 3 => 1, 4 => 2, 5 => 1, 6 => 1],
'M103' => [1 => 1, 2 => 1, 3 => 1, 4 => 1, 5 => 1, 6 => 2],
'M104' => [1 => 2, 2 => 1, 3 => 1],
'M105' => [1 => 1, 2 => 2],
'M106' => [1 => 2, 2 => 1, 3 => 2, 4 => 1, 5 => 2, 6 => 2],
];
// Punktezähler initialisieren
$points = 0;
// Alle Fragen durchlaufen
foreach ($fragen as $frageKenn => $antworten) {
// Für diese Frage den Fehlerzähler auf 0 setzen
$fehler = 0;
foreach ($antworten as $itemKenn => $vorgabe) {
// Kennung des Items zusammenbauen
$kennung = $frageKenn.'_'.$itemKenn;
// Antwort des Teilnehmers abfragen
$antwort = value($kennung);
// Antwort auf Richtigkeit (eigentlich: Falschheit) prüfen
if ($antwort != $vorgabe) {
// Bei Abweichung einen Fehler zählen
$fehler++;
}
}
// Prüfen, ob die Frage fehlerfrei beantwortet wurde
if ($fehler == 0) {
// Einen Punkt vergeben
$points++;
}
}
// Das Ergebnis anzeigen oder anderweitig verarbeiten
if ( $points > 3 )
{
html('Sie haben '.$points.' Punkte erzielt und den Test bestanden. Herzlichen Glückwunsch!');
replace('%reportURL%', reportURL('report'));
text('button_report');
option('nextbutton', false);
option('breakbutton', false);
option('progress', false);
}
else
{
html('Sie haben zu wenig '.$points.' Punkte erzielt. Bitte wiederholen Sie den Test.');
}
Fehlermeldung ist stets:
Die Variablen-Kennung M101_1 gibt es in dem Befragungsprojekt nicht, stattdessen wird Variable M101_01 verwendet und für alle weiteren Fragen ebenso.
Gruss