0 votes
in SoSci Survey (dt.) by s191137 (330 points)
edited by SoSci Survey

Hallo zusammen,

ich bräuchte nochmals Unterstützung bei der Erstellung des PHP-Codes zum Versand von Serienmails bei einer mehrwelligen Befragung.
Ich habe kürzlich eine separate Frage zum Versand an individuellen Uhrzeiten gestellt:
Individuelle Uhrzeit mit mailSchedule
Allerdings denke ich nun, dass es sinnvoller ist, die Fragen an der gleichen Stelle zu klären. Ich bedanke mich im Voraus vielmals für Ihre Unterstützung!

Die Umfrage soll am Ende folgenden Aufbau haben:
- Große T0 Messung (T1)
- Tägliche Prä-Messungen für 7-14 Tage (Dauer wird randomisiert) (T2)
- Tägliche Messungen während der Intervention für 10 Tage (T3)
- Tägliche Post-Messungen für 14 Tage (T4)
- Große Post-Messung (T5)

Die VPn sollen im Eingangsfragebogen die Möglichkeit bekommen, die Uhrzeit des täglichen Versands selbst auszuwählen. Ich habe jetzt eine Variable erstellt, in der die VPn per Dropdown-Auswahl vier unterschiedliche Uhrzeiten auswählen können. Muss ich hier etwas beachten?

Nach den täglichen Prä-Messungen, welche für die verschiedenen Versuchspersonen unterschiedlich lang sein werden, soll es für jede Versuchsperson direkt am nächsten Tag weitergehen.

Zudem sollen Erinnerungsmails verschickt werden, wenn die Versuchspersonen den Fragebogen nicht ausfüllen.

Bisher habe ich Folgendes erarbeitet. Da ich leider noch wenig Erfahrungen mit PHP-Codes habe, würde ich mich über Unterstützung sehr freuen.

$tage = (int)value('RG01', 'label');
$versand = strtotime(value('IT01'));
// Einladungsmails
// T2
for ($i=0; $i<$tage; $i++) {
  mailSchedule(false, $i+1, strtotime('+'.($i+1).' days'$versand));
}
// T3
for ($i<$tage+1; $i<$tage+10; $i++) {
  mailSchedule(false, $i+1, strtotime('+'.($i+1).' days'$versand));
}
// T4
for ($i<$tage+11; $i<$tage+24; $i++) {
  mailSchedule(false, $i+1, strtotime('+'.($i+1).' days'$versand));
}
// T5
mailSchedule(false, $i+1, strtotime('+'.($i+1).' days'$versand));
// Erinnerungsmails (z.B. nach einer und zwei Stunden)
// T2
for ($i=0; $i<$tage; $i++) {
  mailSchedule(false, $i+1, strtotime('+'.($i+1).' hours'), ['status' => 'no-response']);
}
for ($i=0; $i<$tage; $i++) {
  mailSchedule(false, $i+1, strtotime('+'.($i+2).' hours'), ['status' => 'no-response']);
}
// T3
for ($i<$tage+1; $i<$tage+10; $i++) {
  mailSchedule(false, $i+1, strtotime('+'.($i+1).' hours'), ['status' => 'no-response']);
for ($i<$tage+1; $i<$tage+10; $i++) {
  mailSchedule(false, $i+1, strtotime('+'.($i+2).' hours'), ['status' => 'no-response']);
// T4
for ($i<$tage+11; $i<$tage+24; $i++) {
  mailSchedule(false, $i+1, strtotime('+'.($i+1).' hours'), ['status' => 'no-response']);
}
for ($i<$tage+11; $i<$tage+24; $i++) {
  mailSchedule(false, $i+1, strtotime('+'.($i+2).' hours'), ['status' => 'no-response']);
}
// T5
mailSchedule(false, $i+1, strtotime('+'.($i+1).' hours'), ['status' => 'no-response']);
mailSchedule(false, $i+1, strtotime('+'.($i+2).' hours'), ['status' => 'no-response']);

Zum Testen der Umfrage würde ich im Anschluss gerne die Zeiträume verkürzen. Wie kann ich das am besten machen?

Mir ist bewusst, dass das bisher alles noch etwas wild ist. Ich würde mich trotzdem über Hilfestellungen sehr freuen.
Vielen Dank im Voraus!

Viele Grüße

related to an answer for: Randomisierte Dauer

1 Answer

0 votes
by SoSci Survey (304k points)

Ich habe jetzt eine Variable erstellt, in der die VPn per Dropdown-Auswahl vier unterschiedliche Uhrzeiten auswählen können. Muss ich hier etwas beachten?

Gegenfrage: Funktioniert es?

Wenn Sie eine Serienmail auswählen, sehen Sie, zu welchem Zeitpunkt ein Versand geplant ist. Damit lässt sich schnell prüfen, ob mailSchedule() richtig arbeitet.

Wichtig: Jede Serienmail wird an jeden Adressaten nur genau einmal verschickt. Es bringt also nichts, für eine Serienmail mehrere Versandzeitpunkte auszulösen. Das $i+1 scheint mir in dieser Hinsicht noch nicht überall korrekt, z.B. bei T4, da wird in beiden Schleifen dieselbe Serienmail angesprochen. Aber das $i ist ohnehin nur innerhalb der FOR-Schleife sinnvoll.

Zum Testen der Umfrage würde ich im Anschluss gerne die Zeiträume verkürzen. Wie kann ich das am besten machen?

Sie können "hours" durch "minutes" ersetzen. Allerdings bin ich der Meinung, dass das "hours" in Ihrem Code noch nicht ganz korrekt eingesetzte ist. Denn das strtotime() bezieht sich immer auf den aktuellen Zeitpunkt, wenn nichts anderes angegeben ist. Statt

mailSchedule(false, $i+1, strtotime('+'.($i+1).' hours'), ['status' => 'no-response']);

Könnte es also z.B. heißen

mailSchedule(false, $i+1, strtotime('+'.($i+1).' days + 1 hours'), ['status' => 'no-response']);

Mir ist bewusst, dass das bisher alles noch etwas wild ist. Ich würde mich trotzdem über Hilfestellungen sehr freuen.

Machen Sie als erstes eine Liste, welche Serienmail wann verschickt werden soll. Und dann gleichen Sie das damit ab, ob Sie mit dem $i+1 auf diese Nummern kommen bzw. was dort anderes stehen müsste also $i+1.

by SoSci Survey (304k points)
Da fehlt die Uhrzeit würde ich behaupten :)

Gut, dann müssen wir weiter nach oben blicken:

$tage = (int)value('RG01', 'label');
$uhrzeit = strtotime(value('IT01'));

Was genau ist denn in 'IT01' gespeichert? Könnten Sie da bitte mal den Auszug aus der Variablen-Übersicht zu IT01 posten?

Das strtotime() ist hier höchstwahrscheinlich falsch, denn wenn wir die Zeit in strtotime() weiter untern verwenden möchten, brauchen wir ja (noch) keinen UNIX-Zeitstempel, sondern erstmal einen Text.
by s191137 (330 points)
Meinen Sie diesen Ausschnitt mit Variablen-Übersicht?

1 = 10:00
2 = 15:00
3 = 18:00
4 = 20:00
-9 = nicht beantwortet
by SoSci Survey (304k points)
Okay, dann versuchen Sie es bitte wie folgt:

$uhrzeit = value('IT01', 'label');
by s191137 (330 points)
Vielen Dank für die Unterstützung!
Jetzt scheint es zu funktionieren.
asked Oct 25, 2021 in SoSci Survey (dt.) by s191137 (330 points)
edited Oct 25, 2021 by SoSci Survey
Mehrwellige Befragungen

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

...