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

Hallo!

Ich gestalte eine mehrwellige Befragung mit fünf Messzeitpunkten: Baseline, 6-Monats-FU, 12-Monats-FU, 18-Monats-FU, und 24-Monats-FU.

Ich habe anhand der Anleitung zu Unterbrecherseiten und PHP-Codes zunächst eine Struktur gestaltet, bei der am Ende jedes Befragungsteils die Einladungs-Serienmail (+ 3 Erinnerungsmails 5, 10 und 15 Tage später) für den jeweils nächsten Messzeitpunkt terminiert und die Anzeige der Unterbrecherseite für die nächsten 6 Monate terminiert wird. Dies würde funktionieren, aber das Problem, das ich jetzt sehe, ist, dass spätere Zeitpunkte nur dann stattfinden können, wenn ein Teilnehmer den vorangehenden Teil beantwortet hat. Bzw. wenn jmd. einen Befragungsteil nicht oder nicht bis zum Ende beantwortet, wird er nie zu einem folgenden Teil überhaupt eingeladen.

Deshalb habe ich den Code jetzt so geändert, dass alle Einladungsmails für die vier Folgeteile direkt nach Abschluss des Baseline-Teils terminiert werden. So könnte ein Teilnehmer eine Befragung auslassen und würde trotzdem zu späteren Befragungen eingeladen werden.

Mein Frage zielt darauf sicherzustellen, dass ich den PHP-Code für die verschiedenen Zeitpunkte korrekt gestaltet habe.

Es wird jetzt nur einmal eine Zeitvariable $timepart1 am Ende des Baseline-teils erstellt und die Fortsetzbarkeit der Befragung zu allen späteren Zeitpunkten von der seither vergangenen Zeit abhängig gemacht.

Nachstehend der PHP-Code für die Zeitpunkte mit der Bitte, einmal zu schauen, ob ich nicht irgendwo einen Denkfehler gemacht habe ;)
(Die Serienmails mit den aufgeführten IDs habe ich entsprechend erstellt.)

(Ich habe in den Codes NUR HIER IM SUPPORT-FORUM die Zeitterme "Tage x Stunden x 3600" mit "x" statt "Sternchen" für Mal geschrieben, weil diese hier sonst anscheinend nicht richtig angezeigt werden - sonst wird die "24" kursiv gestellt, ohne Anzeige der "Sternchen".)

Vielen Dank und herzliche Grüße

PHP-CODE NACH ABSCHLUSS DER BASELINE-BEFRAGUNG (1. Unterbrecherseite):

// Zeit des ersten Aufrufs der Unterbrecherseite wird in Variable $timepart1 gespeichert.
if (!isset($timepart1)) {
  // Zeit speichern.
  $timepart1 = time();
  registerVariable($timepart1);

// Alle Einladungs-Serienmails für die FU-Teile nach 6, 12, 18 und 24 Monaten sowie jeweils drei Erinnerungsmails dazu - jeweils 5, 10 und 15 Tage nach der Einladung - werden jetzt terminiert.

// Einladung zum 6MFU mit ID 2 nach sechs Monaten = 182 Tagen senden.
  mailResume(false, 2, 182 x 24 x 3600);
// 1. Erinnerungsmail zum 6MFU mit ID 3 fünf Tage nach Einladung senden.
  mailResume(false, 3, 187 x 24 x 3600);
// 2. Erinnerungsmail zum 6MFU mit ID 4 zehn Tage nach Einladung senden.
  mailResume(false, 4, 192 x 24 x 3600);
// 3. Erinnerungsmail zum 6MFU mit ID 5 fünfzehn Tage nach Einladung senden.
  mailResume(false, 5, 197 x 24 x 3600);

// Einladung zum 12MFU mit ID 6 nach zwölf Monaten = 365 Tagen senden.
  mailResume(false, 6, 365 x 24 x 3600);
// 1. Erinnerungsmail zum 12MFU mit ID 7 fünf Tage nach Einladung senden.
  mailResume(false, 7, 370 x 24 x 3600);
// 2. Erinnerungsmail zum 12MFU mit ID 8 zehn Tage nach Einladung senden.
  mailResume(false, 8, 375 x 24 x 3600);
// 3. Erinnerungsmail zum 12MFU mit ID 9 fünfzehn Tage nach Einladung senden.
  mailResume(false, 9, 380 x 24 x 3600);

// Einladung zum 18MFU mit ID 10 nach achtzehn Monaten = 547 Tagen senden.
  mailResume(false, 10, 547 x 24 x 3600);
// 1. Erinnerungsmail zum 18MFU mit ID 11 fünf Tage nach Einladung senden.
  mailResume(false, 11, 552 x 24 x 3600);
// 2. Erinnerungsmail zum 18MFU mit ID 12 zehn Tage nach Einladung senden.
  mailResume(false, 12, 557 x 24 x 3600);
// 3. Erinnerungsmail zum 18MFU mit ID 13 fünfzehn Tage nach Einladung senden.
  mailResume(false, 13, 562 x 24 x 3600);

// Einladung zum 24MFU mit ID 14 nach vierundzwanzig Monaten = 730 Tagen senden.
  mailResume(false, 14, 730 x 24 x 3600);
// 1. Erinnerungsmail zum 24MFU mit ID 15 fünf Tage nach Einladung senden.
  mailResume(false, 15, 735 x 24 x 3600);
// 2. Erinnerungsmail zum 24MFU mit ID 16 zehn Tage nach Einladung senden.
  mailResume(false, 16, 740 x 24 x 3600);
// 3. Erinnerungsmail zum 24MFU mit ID 17 fünfzehn Tage nach Einladung senden.
  mailResume(false, 17, 745 x 24 x 3600);
}

// Prüfen, wie viel Zeit seit dem ersten Aufruf der Seite vergangen ist.
if ((time() - $timepart1) < 182 x 24 x 3600) {
// Unterbrecherseite anzeigen, wenn es weniger als 182 Tage sind, damit der Teilnehmer nicht schon früher Fragen des 6MFU sehen kann.
  option('resume', true); // Kein Hinweis, dass das Interview fortgesetzt wird.
  option('backbutton', false); // Zurück-Knopf ausblenden.
  option('nextbutton', false); // Weiter-Knopf ausblenden (Interview unterbrechen).
  text('ZZ01'); // Verabschiedungstext des Baseline-Teils anzeigen.
} else {
// Kehrt der Teilnehmer nach 182 Tagen zurück, wird die Befragung auf der nächsten Seite = 6MFU fortgesetzt.
  goToPage('next');
}


PHP-CODE NACH ABSCHLUSS DER 6-MONATS-BEFRAGUNG (2. Unterbrecherseite):

// Evtl. noch ausstehende Erinnerungsmails zum 6MFU löschen.
  mailRevoke(false, 3);
  mailRevoke(false, 4);
  mailRevoke(false, 5);

// Prüfen, wie viel Zeit seit Beantwortung der Baseline-Befragung vergangen ist.
if ((time() - $timepart1) < 365 x 24 x 3600) {
// Unterbrecherseite anzeigen, wenn es weniger als 12 Monate = 365 Tage sind, damit der Teilnehmer nicht schon früher Fragen des 12MFU sehen kann.
  option('resume', true); // Kein Hinweis, dass das Interview fortgesetzt wird.
  option('backbutton', false); // Zurück-Knopf ausblenden.
  option('nextbutton', false); // Weiter-Knopf ausblenden (Interview unterbrechen).
  text('ZZ02'); // Verabschiedungstext des 6MFU anzeigen.
} else {
// Kehrt der Teilnehmer nach 365 Tagen zurück, wird die Befragung auf der nächsten Seite = 12MFU fortgesetzt.
  goToPage('next');
}


PHP-CODE NACH ABSCHLUSS DER 12-MONATS-BEFRAGUNG (3. Unterbrecherseite):

// Evtl. noch ausstehende Erinnerungsmails zum 12MFU löschen.
  mailRevoke(false, 7);
  mailRevoke(false, 8);
  mailRevoke(false, 9);

// Prüfen, wie viel Zeit seit Beantwortung der Baseline-Befragung vergangen ist.
if ((time() - $timepart1) < 547 x 24 x 3600) {
// Unterbrecherseite anzeigen, wenn es weniger als 18 Monate = 547 Tage sind, damit der Teilnehmer nicht schon früher Fragen des 18MFU sehen kann.
  option('resume', true); // Kein Hinweis, dass das Interview fortgesetzt wird.
  option('backbutton', false); // Zurück-Knopf ausblenden.
  option('nextbutton', false); // Weiter-Knopf ausblenden (Interview unterbrechen).
  text('ZZ02'); // Verabschiedungstext des 6- bzw. 12MFU anzeigen.
} else {
// Kehrt der Teilnehmer nach 547 Tagen zurück, wird die Befragung auf der nächsten Seite = 18MFU fortgesetzt.
  goToPage('next');
}

PHP-CODE NACH ABSCHLUSS DER 18-MONATS-BEFRAGUNG (4. Unterbrecherseite):

// Evtl. noch ausstehende Erinnerungsmails zum 18MFU löschen.
  mailRevoke(false, 11);
  mailRevoke(false, 12);
  mailRevoke(false, 13);

// Prüfen, wie viel Zeit seit Beantwortung der Baseline-Befragung vergangen ist.
if ((time() - $timepart1) < 730 x 24 x 3600) {
// Unterbrecherseite anzeigen, wenn es weniger als 24 Monate = 730 Tage sind, damit der Teilnehmer nicht schon früher Fragen des 24MFU sehen kann.
  option('resume', true); // Kein Hinweis, dass das Interview fortgesetzt wird.
  option('backbutton', false); // Zurück-Knopf ausblenden.
  option('nextbutton', false); // Weiter-Knopf ausblenden (Interview unterbrechen).
  text('ZZ03'); // Verabschiedungstext des 18MFU anzeigen.
} else {
// Kehrt der Teilnehmer nach 730 Tagen zurück, wird die Befragung auf der nächsten Seite = 24MFU fortgesetzt.
  goToPage('next');
}

PHP-CODE NACH ABSCHLUSS DER 24-MONATS-BEFRAGUNG (letzte Seite):

// Evtl. noch ausstehende Erinnerungsmails zum 24MFU löschen.
  mailRevoke(false, 15);
  mailRevoke(false, 16);
  mailRevoke(false, 17);
  text('ZZ04'); // Verabschiedungstext des 24MFU anzeigen.
  option('backbutton', false); // Zurück-Knopf ausblenden.

1 Answer

0 votes
by SoSci Survey (328k points)

Dies würde funktionieren, aber das Problem, das ich jetzt sehe, ist, dass spätere Zeitpunkte nur dann stattfinden können, wenn ein Teilnehmer den vorangehenden Teil beantwortet hat.

Das ist korrekt. Deshalb sind getrennte Fragebögen ab 3 Erhebungszeitpunkten in aller Regel einfacher zu handhaben.

Mein Frage zielt darauf sicherzustellen, dass ich den PHP-Code für die verschiedenen Zeitpunkte korrekt gestaltet habe.

Testen Sie das bitte aus, indem Sie z.B. Minuten statt Tagen verwenden.

Ein Problemchen, das Sie mit Unterbrecherseiten bzw. mailResume() potenziell noch haben ist, dass der Fragebogen immer dort fortgesetzt wird, wo er unterbrochen wurde. Wenn jemand also Teil 2 auslässt, dann führt die Teil-3-Mail dennoch zu Teil 2.

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

...