0 votes
in SoSci Survey (dt.) by s087236 (110 points)

Ich habe eine Wiederholung von Seiten mit LoopToPage angelegt, das funktioniert auch soweit. Jetzt möchte ich aber das auf einer der zu wiederholenden Seiten (Seite 2), die Fragen nur angezeigt werden, wenn auf einer vorherigen Seite (Seite 1) ein bestimmter Wert angegben wurde. Andernfalls soll auf Seite 2 nichts angezeigt werden bzw. sie einfach übersprungen werden.
Die if-Bedingung funktioniert, aber wenn diese nicht zutrifft und ich keine else-Bedingung angebe, läuft die Schleife nicht weiter bzw. zeigt die vorherige Seite erneut an.
In der else-Bedingung eine bestimmte Seite mit goToPage() anzugeben funktioniert leider auch nicht, wie gewünscht.

Kann man dies durch eine bestimmte Funktion verhindern oder muss in Schleifen auf den Seiten immer etwas angezeigt werden ohne das eine Seite übersprungen werden kann?

1 Answer

0 votes
by SoSci Survey (302k points)

Ich bin mir nicht ganz sicher, ob ich Ihre Frage korrekt verstehe.

Aber suchen Sie vielleicht nach dem Befehl goToPage('next')? Damit können Sie eine Seite auch dann überspringen, wenn sie eigentlich noch andere Inhalte zeigen würde. Leere Seiten überspringt SoSci Survey standardmäßig, wenn Sie in den Einstellungen des Fragebogens nichts anderes eingestellt haben.

Wenn SIe das nicht meinten, ergänzen Sie Ihre Frage bitte um die Debug-Information zu Ihrem Problem. Danke.

by s087236 (110 points)
Danke für die schnelle Antwort, aber goToPage('next') löst mein Problem leider nicht. Ich probiere es nochmal anders zu beschreiben:
Seite 1 und 2 sollen in einer LoopToPage-Schleife wiederholt werden. Auf Seite 2 sollen nur dann Fragen angezeigt werden, wenn Frage 1 (von Seite 1) ungleich 3 ist. Wenn Frage 1 gleich 3 ist, soll Seite 2 nicht angezeigt werden, sondern erneut die Schleife durchlaufen werden oder wenn es sich um das letzte Schleifenelement handelte, die Schleife beendet werden. Der Code dazu sieht so aus:

$i = loopIndex();
$set = $fragen[$i];
if (value($set[0])!= 3) {
    question($set[1]);
    question($set[2]);
}

Wenn der Wert 3 bei Frage 1 auf Seite 1 ausgewählt wird, wird dieselbe Seite mit denselben ausgewählten Werten angezeigt wie vorher, also 3 ist schon ausgewählt. Drückt man erneut auf weiter wird der Fehler "Die Variable x wurde im Laufe dieses Interviews auf keiner vorhergehenden Seite abgefragt. Daher kann die Funktion value() keinen Antwort-Wert ermitteln." angezeigt.

Meine Frage ist, wie dieser Fehler bzw. das erneute Aufrufen mit ausgefüllten Werten unterdrückt werden kann. Lösungsansätze wie else weglassen, goToPage('next') waren nicht erfolgreich.
by SoSci Survey (302k points)
Es sieht so aus, als sei der Fehler im Code Ihrer Seite 1. Was steht denn dort?
by s087236 (110 points)
Der Code auf Seite 1 sieht so aus:
$i = loopToPage('Seite 2', 3);
debug($i);
$set = $fragen[$i];
question($set[0]);

Für $fragen wurde auf einer vorherigen Seite ein array mit den Kopien der Fragen erstellt, wie im Artikel zu LoopToPage() erklärt wurde.
Es scheint als würde $i bzw. loopIndex() nicht hochgezählt werden, wenn keine Frage auf Seite 2 angegeben wird.
Wenn eine Frage auf Seite 2 angezeigt wird, ändert sich in der Debug-Information der Wert für $i. Wenn keine Fragen auf Seite 2 angezeigt wird, ändert sich der Wert nicht.
by SoSci Survey (302k points)
Ich möchte nicht ausschließen, dass Sie da einen Programmfehler gefunden haben könnten. Das müssen wir uns genauer ansehen... Vermutlich kann ich Ihnen bis morgen (Fr) Abend genaueres sagen.
by s087236 (110 points)
Hallo, konnten Sie schon etwas neues herausfinden? Meine weiteren Versuche haben leider keinen Erfolg gezeigt.
by SoSci Survey (302k points)
Entschuldigen Sie, dass sich die Antwort ein wenig verzögert hat - und die Lösung sich sogar noch weiter verzögern wird. Das Problem ist technischer Natur und sitzt tiefer als befürchtet: Wenn die zweite Seite leer ist, springt der Fragebogen direkt weiter zur nächte (=ersten) Seite. Aus technsicher Sicht wird aber gleichzeitig die leere zweite und die erste angezeigt - und deshalb zählt der Zähler noch nicht hoch.

Ich gehe davon aus, dass das lösbar ist, aber ganz einfach ist es leider nicht...
by SoSci Survey (302k points)
So, durch ein Workaround, das loopIndex() in Verbindung mit leeren Seiten bzw. goToPage() gesondert behandelt, ließ sich das Problem nun doch in den Griff bekommen... Funktioniert es nun, wie erwartet?
by s087236 (110 points)
Ja, jetzt läuft es fehlerfrei durch! Vielen Dank für die zeitnahe Bearbeitung trotz des größeren Aufwandes :)

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

...