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

Das Looping mit den Rubriken funktioniert gut, wenn alle Fragen aus der Rubrik auf einer einzigen Seite sind.
Innerhalb der Rubriken habe ich Filter, da nicht alle Fragen aus einer Rubrik gestellt werden sollen. So soll z.B. die Frage, ob ein Geschwister im HH gelebt hat nur dann gestellt werden, wenn in der Vorfrage angegeben wurde, dass es vor einem bestimmten Zeitpunkt nicht gestorben ist.
Verteile ich aber die Items auf aufeinanderfolgende Seiten, dann kommt bei der 2. Rubrik bei Frage 1 die Frage 2 der vorangegangen Rubrik, bei Rubrik 3 bei Frage 1 die Frage 3 der vorangegangenen Rubrik usw.
Ich habe jetzt schon sehr lange rumprobiert, finde aber den Fehler nicht, resp. was mache ich falsch?
Vielen Dank für die Hilfe!

in SoSci Survey (dt.) by s101603 (155 points)

1 Answer

+1 vote
 
Best answer

Mit loopIndex() können Sie auf allen Seiten inner halb der Schleife den Durchgang abfragen, eine Liste mit Rubriken können Sie ggf. auf jede Seite kopieren oder mittels registerVariable() für alle Seiten verfügbar machen. Mit id() können Sie aus Rubrik + Frage-Kennung + evtl. Itemkennung bequem die Kennung von Variablen ermitteln. Diese können Sie dann in value() und damit in Filtern verwenden.

Soweit die allgemeine Antwort. Für eine konkretere Antwort müssten Sie bitte mal Ihren bisherigen PHP-Code posten, dazu die Debug-Information und beschreiben, was funktioniert und was nicht.

by SoSci Survey (71.3k points)
selected by s101603
Dankeschön, ich habe mir die Situation nun einmal angesehen. Vorab: Sie haben 4 (!) Fragebogen unter "Fragebogen zusammenstellen" angelegt. Das ist kein Problem, aber Sie sollten im Auge behalten, dass Sie stets im richtigen Fragebogen arbeiten. Ich habe mir jetzt den "qnr2" angesehen, den Sie oben verlinkt hatten.

GS02 fragt nach der Anzahl der Geschwister (S. 40). Auf Seite 41 ist dann das loopToPage() bis 'LEnd' (S. 47). Soweit alles gut. LA08 wird dann auch korrekt angezeigt. Auch sonst sieht auf den ersten Blick alles bis Seite 47 korrekt aus.

Wenn nun die LA04 (Frage nach dem Todesjahr) angezeigt wird, wird es ein wenig komplizierter. Denn hier ist ein Filter hinterlegt, dass entweder LA06 oder LA07 ausgeblendet wird. Aber wenn die Frage LA04 gar nicht angezeigt wird, dann bleibt der FIlter inaktiv und keine der beiden Fragen wird ausgeblendet. Dies nur als Hinweis.

Aber ansonsten sieht alles korrekt aus. Was muss ich denn auswählen, damit der Fehler auftritt?
Sie müssen in den Zweig gehen, wo nach dem Todesjahr gefragt wird;
Frage LA03 mit "Ja" beantworten, dann in LA04 das Sterbejahr auswählen;
Dann kommt - korrekterweise - LB08 (Name) - und dann - falsch - LA01(Geschlecht) wieder.
Nur kurz als Zwischenmeldung: Mit Ihrr Beschreibung kann ich das Problem replizieren. Ich hoffe, dass es sich morgen oder spätestens am Donnerstag beheben lässt.
Puh ... der Fehler hatte sich gut versteckt. Aber nun ist er behoben und es funktioniert :)

Der Fehler trat auf, wenn in einer loopToPage()-Schleife nicht nur eine, sondern zwei (oder mehr) Seiten direkt nacheinander übersprungen wurden. Das ist eine relativ seltene Konstellation, deshalb war er nicht früher aufgefallen.

Eine letzte Anmerkung noch. In der Frage "Nennen Sie uns bitte den Namen Ihres Geschwisters." würde ich empfehlen, dass Sie per Platzhalter noch die Nummer des Geschwisters angeben. Zumindest wenn n>1. Das ist lreativ einfach:

if (value('GS02') > 1) {
  replace('%num%', ($i+1).'tes');
} else {
  replace('%num%', '');
}

Der Code muss unter das loopToPage() bzw. loopIndex() und vor das question().
Vielen herzlichen Dank! - Jetzt funktioniert es so, wie es sollte. Auch der Zähler funktioniert, danke für den Tipp! :-)))
...