Hallo Support-Team,
ich brauche Hilfe bei der Konfiguration einer mehrseitigen Schleife mittels loopToPage(). Mein Setup verhält sich trotz verschiedener Anpassungsversuche fehlerhaft (Seiten werden übersprungen oder fälschlicherweise zusammengezogen).
Das Ziel:
Es sollen 20 Stimuli in einer Schleife über drei Seiten abgefragt werden:
Seite STIM: Zeigt den Stimulus und eine Ja/Nein-Auswahl (F001). Bei „Nein“ soll die Runde sofort abgebrochen und der nächste Stimulus geladen werden. Bei „Ja“ geht es weiter.
Seite FOL 1: Enthält einen Text-Reminder und eine Pflichtfrage (F002). Nach einer "Ja"-Auswahl soll zwingend die nächste Seite, also FOL 2, folgen, sonst soll die Schleife verlassen werden.
Seite FOL 2: Enthält ein offenes Textfeld (F004), das mit dem aktuellen Stimulus vorausgefüllt ist. Erst danach soll die Schleifenrunde enden.
Das aktuelle Problem:
Egal ob ich das Schleifenende im loopToPage() auf FOL 2 oder auf die nachfolgende Seite K setze: Wenn der Teilnehmer zweimal mit „Ja“ antwortet (auf STIM und auf FOL 1), überspringt der Fragebogen die Seite FOL 2 komplett und springt entweder sofort zum nächsten Stimulus oder direkt auf die Seite K (Frage nach dem Abschlusskommentar). Die Pflichtfrage auf FOL 1 scheint das reguläre Weiterblättern auf die direkt folgende Seite zu blockieren oder den Schleifenzähler vorzeitig hochzusetzen.
Versuche mit setPageOrder(), goToPage() oder value()-Filtern führten entweder zu Geisterseiten (Page-Merging, bei dem Fragen der Folgeseiten unten angehängt wurden) oder zum vollständigen Überspringen des Textfeldes.
Die aktuelle Code-Struktur auf den Seiten:
Vorgeschaltete Seite (Initialisierung):
PHP
if (!isset($stimuli)) {
$stimuli = array(1 => 'Ich wollte mit ihm kämpfen...', /* ... 20 Sätze ... */);
$reihenfolge = array_keys($stimuli);
shuffle($reihenfolge);
registerVariable($stimuli);
registerVariable($reihenfolge);
$currentIdx = 0;
registerVariable($currentIdx);
}
goToPage('next');
Seite STIM:
PHP
$i = loopToPage('K', 20); // 'K' ist die Seite nach der Schleife
$currentIdx = $i;
registerVariable($currentIdx);
$satzID = $reihenfolge[$currentIdx];
$aktuellerSatz = $stimuli[$satzID];
replace('%stimulus%', $aktuellerSatz);
// Darunter platziert: Frage F001 (Ja/Nein)
Seite FOL 1:
PHP
if (value('F001') == 2) { goToPage('K'); } // Abbruch bei "Nein"
$aktuellID = $reihenfolge[$currentIdx];
$aktuellerText = $stimuli[$aktuellID];
replace('%stimulus%', $aktuellerText);
html('<p>Zur Erinnerung: %stimulus%</p>');
question('F002'); // Pflichtfrage
setPageOrder('FOL 2');
Seite FOL 2:
PHP
$aktuellID = $reihenfolge[$currentIdx];
$aktuellerText = $stimuli[$aktuellID];
question('F004', array('F004_01' => $aktuellerText));
setPageOrder('K');
Könnten Sie mir bitte mitteilen, an welcher Stelle meine Logik mit dem internen Page-Processing von SoSci Survey kollidiert und wie der korrekte Befehlssatz lauten muss, damit FOL 2 bei einem „Ja“ zuverlässig geladen wird?
Die URL des Fragebogens lautet: https://survey.ifkw.lmu.de/verstaendlich/.
Vielen Dank für Ihre Unterstützung!