0 votes
in SoSci Survey (dt.) by s166451 (145 points)

Hallo!

Ich möchte in meiner Befragung auf jeder Seite eine Multiple Choice Frage stellen. Diese Fragen sollen in randomisierter Reihenfolge dargestellt werden. Die Randomisierung mittels Zufallszahl klappt auch prima. Ich habe aber ebenfalls eine Interne Variable erstellt, in der mittels put() gespeichert werden soll, ob die Frage Richtig (1) oder Falsch (0) beantwortet wurde. Den Code für die Speicherung in der Internen Variable hatte ich immer auf der Seite der nächsten Frage.

Seit ich die Rotation eingeführt habe kriege ich (verständlicher Weise) die Fehlermeldung, dass die Fragen teilweise noch gar nicht beantwortet wurden und deswegen die Antwort nicht gespeichert werden kann, weil die Frage erst zu einem späteren Zeitpunkt gezogen wird.

  1. Muss ich nun die Codes für die Speicherung alle auf einer Seite nach dem Abschluss aller Fragen hinterlegen?

  2. Mein Code für die Richtig/Falsch Speicherung sieht gerade wie folgt aus:
    //Speichern in Interner Variable, ob vorherige Antwort richtig oder falsch war
    if (value('RF01') == 4) {
    put('R01_R', 1); //richtig
    } else {
    put('R01_R', 0); //falsch
    }

Ich habe 32 Fragen. Wenn ich jetzt 32 mal diesen Code auf eine Seite am Ende packen muss könnte das ganz schön unübersichtlich werden. Gibt es eine effizientere Lösung?

Vielen Dank für die Hilfe!

1 Answer

0 votes
by SoSci Survey (328k points)

Eine mögliche Lösung besteht darin, dass Sie den Code - ebenso wie die Anzeige der Fragen - von der Schleifen-Variable abhängig machen. Dafür können Sie z.B. die Nummer der Frage mittels substr() extrahieren und daraus die IDs der internen Variablen ableiten. Und die Variable für value() natürlich auch.

Die andere Option besteht darin, dass Sie alle Filter in eine Funktion packen, und diese in den Karteireiter "PHP-Funktionen". Und dann rufen Sie diese Funktion einfach bei jeer Wiederholung auf.

Seit ich die Rotation eingeführt habe kriege ich (verständlicher Weise) die Fehlermeldung, dass die Fragen teilweise noch gar nicht beantwortet wurden

Diese Meldung sehen ohnehin nur Sie. Aber wenn Sie sie stört, dann teilen Sie SoSci Survey mit, dass Sie wissen, dass es eventuell noch keine Antworten gibt und auf den Hinweis verzichten möchten. Dafür ergänzen Sie einfach einen zweiten Parameter in value().

value('RF01', 'code:ifany')

Gibt es eine effizientere Lösung?

Ich würde ein Array und eine kleine Schleife empfehlen, etwa so wie hier erklärt:
Punkte für Antworten zählen

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

...