Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

0 votes

Hallo,
ich möchte, dass Fragen eines Tests direkt ausgewertet und den Teilnehmern angezeigt werden.
Bei einfachen Fragen mit den Antwortketegorien "richtig" (1) und "falsch" (2) funktioniert das ganz gut. Bei einer Frage gibt es jedoch 4 Antwortmöglichkeiten, für die es verschieden viele Punkte geben soll.
Kategorie 1 -> entspricht 3 Punkte,
Kategorie 2 -> 2 Punkte,
Kategorie 3 -> 1 Punkt und
Kategorie 4 -> kein Punkt.

Ich habe das im PHP-Code wie folgt umgesetzt:

 $frage = array(
    'S206' => 1,  
    'S207' => 1,
    'S209' => 1,
    'S210' => array(1 => 3, 2 => 2, 3 => 1, 4 => 0)
);

$points = 0;
 
foreach ($frage as $variable=>$correct) {
  $answer = value($variable);

  if ($answer == $correct) {
    $points++;}
}

html('<p>Anzahl der Punkte für den Teilbereich A' .$points.'.</p>');
put('MOCAS1', $points);

Es werden aber leider immer Null Punkte gezählt, egal, was angeklickt wurde.

in SoSci Survey (dt.) by s150518 (185 points)

1 Answer

0 votes
 
Best answer

Das foreach, das Sie unten verwenden, geht das eingangs defnierte Array Eintrag für Eintrag (in Ihrem Fall: Zeile für Zeile) durch. Dabei wird der Teil links vom => als Variablenname interpretiert, der Teil rechts davon als korrekter Antwortcode.

Wenn Sie unterschiedlich viele Punkte für untrschiedliche Antworten zählen möchten, dann müssen Sie für alle (!) Fragen den PHP-Code verwenden, welchen die Anleitung unter Verschiedene Punktwerte zeigt. Dort ist nicht nur der obere Teil anders - mit array() - sondern auch der untere Teil sieht ein wenig anders aus.

Bei den richtig/falsch-Fragen müssen Sie dann für die korrekte Antwort einfach ein wenig mehr schreiben.

by SoSci Survey (228k points)
selected by s150518
...