0 votes
in SoSci Survey (dt.) by s262506 (120 points)
edited by SoSci Survey

Ich habe bei der Programmierung der Unterbrecherseite Probleme. Es handelt sich um eine mehrwellige Befragung (3 Messzeitpunkte mit jeweils einem Link pro Messzeitpunkt) und beim Testen im DeBug-Modus klappt der erste Link der per Opt-In an die Probanden geschickt wird wunderbar und hört nach der ersten Aufgabe wie gewünscht auf.

Jedoch wird bei der zweiten Erhebungswelle der Abschiedstext (SM06) nicht angezeigt und direkt zur dritten Aufgabe geführt.

Was mache ich falsch? Untenstehend finden Sie den Code:

// Zeit der ersten Besuchs der Seite speichern.
if (!isset($t0)) {
  $t0 = time();
  registerVariable('t0');
}

// Prüfen, wie viel Zeit seit Beginn des Befragung vergangen ist
if (caseTime('begin') < 250) {
  // Falls es weniger als 48 Stunden sind (48 * 3600 Sekunden), wird das Interview unterbrochen
  text('SM06'); // Verabschiedung zum ersten Teil anzeigen
  option('resume', true); // Hinweis auf fortgesetztes Interview verhindern
  option('nextbutton', false); // Weiter-Knopf ausblenden (Interview unterbrechen)
  // Serienmail mit der Kennung 3 morgen um dieselbe Zeit versenden (also in genau 48 Stunden)
  mailResume(false, 4, 250);
} elseif (time() < $t0 + 250) {
  // Wenn bereits weniger als eine Woche vergangen ist, Verabschiedung zum ersten Fragebogen zeigen
  text('SM06');
  // Keine Knöpfe anzeigen, sonst wäre es keine richtige Verabschiedung
  buttonHide();
} else {
  // Andernfalls, nach Ablauf der Sperrfrist, geht es mit der folgenden Seite weiter
  option('progress', 0);
  goToPage('next');
}

1 Answer

0 votes
by SoSci Survey (327k points)

Bei mehr als zwei Erhebungswellen rate ich zur Vorsicht mit Unterbrecherseiten. Wenn jemand an der zweiten Welle nicht teilnimmt oder nur teilweise ausfüllt, führt das in der dritten Welle schnell zu großen Irritationen. Separate Fragebögen sind dann oft die bessere Wahl.

Was mache ich falsch? Untenstehend finden Sie den Code:

Sie mischen hier caseTime('begin') und time() - das kann schnell zu unerwarteten Werten führen. Nehmen wir mal an, das Interview beginnt um 0:00 Uhr, um 0:10 Uhr wird diese Seite erreicht.

Dann hat caseTime('begin') den Wert 600, $t0 + 250 hat den Wert 0:14 Uhr (ungefähr). In dem Fall würde nur der mittlere Filter greifen. Ich weiß nicht, ob es das ist, was Sie haben möchten?

Und wo steht dieser Code denn eigentlich? Am Ende des ersten oder des zweiten Teils? Und was sollten die drei Teile des IF-Filters bewirken - also warum nicht nur zwei?

by s262506 (120 points)
Vielen Dank für die Antwort.
Wir hatten versucht MailResume und buttonhide zu verbinden, daraus ist der Code dann mit den drei IF-Filtern entstanden.
Der Code steht am Ende des zweiten Teils. Der identische Code mit anderen Zeiten nach dem ersten Teil funktioniert.
Was würden Sie vorschlagen zu verändern?
Wir würden die Unterbrecherseite gerne beibehalten, da wir schon viel rum probiert hatten und diverse Fragebögen erstellt hatten, was ebenfalls zu Problemen geführt hatte.
by SoSci Survey (327k points)
> Was würden Sie vorschlagen zu verändern?

Verwenden Sie kein caseTime('begin') und achten Sie darauf, dass Sie einmal $t0 udn einmal $t1 verwenden. Nachdem Sie $t0 ja schon bei der ersten Unterbrechung definieren, wird es sonst bei der zweiten Unterbrechung nicht neu gesetzt.

> da wir schon viel rum probiert hatten und diverse Fragebögen erstellt hatten, was ebenfalls zu Problemen geführt hatte.

Sagen Sie am Ende aber nicht, ich hätte Sie nicht gewarnt.

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

...