0 votes
ago in SoSci Survey (dt.) by s365635 (110 points)
edited ago by SoSci Survey

Ich erstelle zurzeit einen Wissenstest und möchte, dass die Teilnehmenden am Ende jeder Fragebogenseite sehen, wieviele Punkte sie auf jede Frage bekommen haben. Ich habe mich hierfür an der Website orientiert und diesen Code gemacht:

$fragen = [question ('GM02'=>4);  // Global Schüler*inbezug 
question ('GM05'=>2);  // Herausforderungen
question ('GM03'=>2);  // Fehler
question ('GM04'=>2);  // Niedrige Leistungen
];
// Initialisierung einer Zähler-Variable
$points = 0; 

// Prüfung aller Fragen in einer Schleife
foreach ($fragen as $variable=>correct) {
$answer = value($variable);
if ($answer == $correct) {
$points++;}
}

// Das Ergebnis anzeigen ...
html('<p>Sie haben '.$points.' Punkte erzielt. </p>');

Diesen habe ich dann in das flexible Element 'PHP-Code' und bekomme dann immer die Fehlermeldung:
Im PHP-Code trat ein Fehler auf.
Fehler im Fragebogen: Befehl oder String (Text) nicht abgeschlossen

Hinter einem Befehl wie z.B. question() steht kein Strichpunkt oder
ein String (Text in Anführungszeichen) ist nicht abgeschlossen oder
im String selbst kommt ein Anführungszeichen vor, z.B. html('Mach's besser!'); – in diesem Fall stellen Sie dem Anführungszeichen einen Backslash () voran.
Möglicherweise stimmen die öffnenenden und schließenden geschweiften Klammern für Anweisungsblöcke auch nicht überein.
PHP-Code

001 namespace s2survey\questionnaire\environment;
002 
003 $fragen = [question ('GM02'=>4);   
004 question ('GM05'=>2);   
005 question ('GM03'=>2);   
006 question ('GM04'=>2);

Ich sitze jetzt schon sehr lange daran und weiß mir einfach nicht mehr zu helfen. Das sind auch noch die einfachen Fragen, es kommen dann noch MC-Fragen.

Ich bedanke mich schonmal für die Hilfe!

1 Answer

0 votes
ago by SoSci Survey (371k points)

Ich habe mich hierfür an der Website orientiert und diesen Code gemacht

In der Anleitung Punkte für Antworten zählen sieht der Code ein wenig anders aus. Speziell darf in der Definition der korrekten Antworten kein question() vorkommen. Also statt (falsch)

$fragen = [question ('GM02'=>4);  // Global Schüler*inbezug 
question ('GM05'=>2);  // Herausforderungen
question ('GM03'=>2);  // Fehler
question ('GM04'=>2);  // Niedrige Leistungen
];

muss das Array wie folgt definiert werden (richtig):

$fragen = [
  'GM02' => 4,  // Global Schüler*inbezug 
  'GM05' => 2,  // Herausforderungen
  'GM03' => 2,  // Fehler
  'GM04' => 2  // Niedrige Leistungen
];

Auf der linken Seite vom => müssen die Namen von Variablen stehen, rechts die Codes der korrekten Antworten.

ago by s365635 (110 points)
Vielen Dank für die schnelle Antwort!

Jetzt ist aber noch das Problem, dass nie angezeigt wird, wieviele Punkte jemand erreicht hat. Also es ist so, dass man die Fragen ankreuzt und auf "weiter" zu den nächsten Fragen klickt und dann steht unten "Sie haben 0 Punkte", geht man dann aber wieder zurück zur vorherigen Frage steht schon eine Punktzahl da. Geht man dann wieder weiter zur nächsten Frage steht wieder "Sie haben 0 Punkte". Es wirkt so, als könnte der Code so die Punkte nicht addieren. Geht das irgendwie?


Außerdem kommt folgende Fehlermeldung/Warnung: "Die Variable GM06 wurde im Laufe dieses Interviews auf keiner vorhergehenden Seite abgefragt. Daher kann die Funktion value() keinen Antwort-Wert ermitteln." (für den Kontext: auf der Seite, wo diese Fehlermeldung steht, wurde GM06 abgefragt)
ago by SoSci Survey (371k points)
Die Antworten können erste gezählt werden, wenn sie mittels "Weiter" an den Server übermittelt wurden. Der Code sollte also nicht auf denselben Seiten stehen wie die Fragen. Abgesehen davon sollte der Code korrekt zählen. Posten Sie gerne einmal die Debug-Information der Seite, auf welcher die Punktezahl angezeigt wird.

> Die Variable GM06 wurde im Laufe dieses Interviews auf keiner vorhergehenden Seite abgefragt.

In dem Beispielcode oben kommt GM06 nicht vor, deshalb kann ich dazu wenig sagen. Aber die Debug-Information und die Variablen-Übersicht sollte mehr verraten.
ago by s365635 (110 points)
Das mit der nächsten Seite weiß ich auch mittlerweile
Das sind die Debug-Informationen von Seiten, wo das mit Multiple Choice Fragen nicht funktioniert.
[Verarbeitung]    Lese Antworten von Seite 9+10+11
[Information]    Antwort auf GO02_01 = 1
[Information]    Antwort auf GO02_02 = 1
[Information]    Antwort auf GO02_03 = 2
[Information]    Antwort auf GO02_04 = 2
[Information]    Antwort auf GO02 = 2
[Information]    Antwort auf GO06_01 = 1
[Information]    Antwort auf GO06_02 = 2
[Information]    Antwort auf GO06_03 = 2
[Information]    Antwort auf GO06_04 = 1
[Information]    Antwort auf GO06_05 = 1
[Information]    Antwort auf GO06 = 2
[Information]    Antwort auf GO09_01 = 1
[Information]    Antwort auf GO09_02 = 2
[Information]    Antwort auf GO09_03 = 1
[Information]    Antwort auf GO09_04 = 1
[Information]    Antwort auf GO09_05 = 2
[Information]    Antwort auf GO09_06 = 1
[Information]    Antwort auf GO09_07 = 1
[Information]    Antwort auf GO09 = 2
[Information]    Antwort auf GO10_01 = 1
[Information]    Antwort auf GO10_02 = 1
[Information]    Antwort auf GO10_03 = 1
[Information]    Antwort auf GO10_04 = 2
[Information]    Antwort auf GO10_05 = 1
[Information]    Antwort auf GO10_06 = 1
[Information]    Antwort auf GO10 = 1
[Information]    Fragen bisher zu 100% vollständig beantwortet
[Verarbeitung]    Erstelle Seite 12 in Fragebogen base
[Information]    value("GO02_1") = 1
[Information]    value("GO02_2") = 1
[Information]    value("GO02_3") = 2
[Information]    value("GO02_4") = 2
[Information]    value("GO06_1") = 1
[Information]    value("GO06_2") = 2
[Information]    value("GO06_3") = 2
[Information]    value("GO06_4") = 1
[Information]    value("GO06_5") = 1
[Information]    value("GO09_1") = 1
[Information]    value("GO09_2") = 2
[Information]    value("GO09_3") = 1
[Information]    value("GO09_4") = 1
[Information]    value("GO09_5") = 2
[Information]    value("GO09_6") = 1
[Information]    value("GO09_7") = 1
[Information]    value("GO10_1") = 1
[Information]    value("GO10_2") = 1
[Information]    value("GO10_3") = 1
[Information]    value("GO10_4") = 2
[Information]    value("GO10_5") = 1
[Information]    value("GO10_6") = 1
[Information]    Die Seite zeigt keine Inhalte, automatisch weiter mit Seite Nr. 13
[Verarbeitung]    Erstelle Seite 13 in Fragebogen base
[Inhalt]    Erstelle Frage VI01
[Inhalt]    Erstelle Frage VI02
[Information]    Speicherbedarf RAM 1.9 MB (Seiteninhalt 0.7 MB)


Das mit dem addieren der Punkte funktioniert trotzdem nicht, wenn der Code auf der nächsten Seite steht

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

...