0 votes
in SoSci Survey (dt.) by s252083 (175 points)

Hallo!

Ich möchte eine mehrwellige Befragung (Tagebuchstudie) durchführen:

Einstiegsfragebogen (mit OPT-In Frage zur Erfassung der Mailadressen) = T0

An den folgenden sieben Tagen sollen die TeilnehmerInnen um 18 Uhr einen kürzeren Fragebogen ausfüllen = T1, T2, T3, T4, T5, T6, T7

Ich habe mir die Seite zu mehrwelligen Befragungen angeschaut, aber nicht verstanden, wie ich den Zeitpunkt der kurzen Fragebögen auf für alle Personen auf 18 Uhr legen kann. Der Link zum Einstiegsfragebogen wird über einige Monate aktiv sein also werden Personen diesen zu unterschiedlichen Zeitpunkten ausfüllen (z.B. 01.07.23 um 15 Uhr und 4.07.23 um 8 Uhr). Wie kann ich sicherstellen, dass beide Personen die Serienmail zum kurzen Fragebogen am jeweiligen Folgetag um 18 Uhr zugeschickt bekommen? Und natürlich die weiteren sechs Tage ebenso?

Vielen Dank für Ihre Hilfe und liebe Grüße!

by SoSci Survey (328k points)
Suchen sie in Anleitung und im Online-Support bitte einmal nach der Funktion strtotime(). Diese kann Ihnen die Zeitstempel für die Funktion mailSchedule() erzeugen. Wenn Sie eine grundsätzliche Vorstellung von der Funktion haben, posten Sie mal, wie weit Sie gekommen sind. Dann kümmern wir uns um die Details.
by s252083 (175 points)
Danke für die Antwort! Grundsätzlich sollte es wohl so ähnlich ausschauen, nur, dass in dem Fall noch einiges fehlt.

<?php
mailSchedule(false, 2, time) // Versand der 2. Serienmail, die zum ersten Kurzfragebogen einlädt
mailSchedule(false, 3, time) // 3. Serienmail, 2. Kurzfragebogen
mailSchedule(false, 4, time) // 4. Serienmail, 3. Kurzfragebogen
mailSchedule(false, 5, time) // 5. Serienmail, 4. Kurzfragebogen
mailSchedule(false, 6, time) // 6. Serienmail, 5. Kurzfragebogen
mailSchedule(false, 7, time) // 7. Serienmail, 6. Kurzfragebogen
mailSchedule(false, 8, time) // 8. Serienmail, 7. und letzter Kurzfragebogen
?>

Kann ich bei der strtotime() Funktion den aktuellen Tag einsetzen (das wäre 0 Uhr am jeweiligen Tag oder?) und dann +1 Tag und 12 Stunden (also 129 600 Sekunden)? Würde die Person die Serienmail dann am Folgetag um 18 Uhr bekommen?

Falls das theoretisch richtig wäre, verstehe ich dann aber noch immer nicht wirklich, wie ich das einsetzen kann.

So?: mailSchedule(false, 2, strtotime(today + 129 600))
Oder so?: mailSchedule(false, 2, strtotime(d.m.Y + 129 600))

Ich weiß, dass das erstmal sehr wenig ist. Leider hab ich noch nie mit php gearbeitet und finde es ziemlich kompliziert. Bin für jede Hilfe dankbar!

Liebe Grüße!
by SoSci Survey (328k points)
> Kann ich bei der strtotime() Funktion den aktuellen Tag einsetzen

Ja, aber das ist gar nicht nötig - standardmäßig geht strtotime() ohnehin von "jetzt" als Referenz aus. Testen Sie mal folgendes:

$time = strtotime('tomorrow 18:00:00');
debug(date('d.m.Y H:i', $time));

$time = strtotime('tomorrow 18:00:00 +1 day');
debug(date('d.m.Y H:i', $time));

> Leider hab ich noch nie mit php gearbeitet und finde es ziemlich kompliziert.

Natürlich ist der Einstieg ins Programmieren (also eine komplett neue Fertigkeit) anspruchsvoll - aber das ist es wert :)

Falls Sie ein wenig Unterstützung für den Einsteig brauchen... Sehen Sie sich mal das Video-Tutorial PHP-Code an: https://www.soscisurvey.de/de/screencast#extra2
by s252083 (175 points)
Vielen Dank, es hat funktioniert!

Dann gibt es noch zwei Punkte:

Muss ich die Variable $time für die jeweiligen Tage anders benennen ($time1, $time2; $time3,...)?
Kann ich die Funktion strtotime() für die Tage 2-7 abändern (strtotime('tomorrow 18:00:00 +1 days'))?

Also:

// 2. Serienmail, 1. Kurzfragebogen
$time1 = strtotime('tomorrow 18:00:00');
debug(date('d.m.Y. H:i', $time1));
mailSchedule(false, 2, $time1);

// 3. Serienmail, 2. Kurzfragebogen

$time2 = strtotime('tomorrow 18:00:00 +1 days');
debug(date('d.m.Y. H:i', $time2));
mailSchedule(false, 3, $time2);

// 4. Serienmail, 3. Kurzfragebogen

$time3 = strtotime('tomorrow 18:00:00 +2 days');
debug(date('d.m.Y. H:i', $time3));
mailSchedule(false, 4, $time3);

// 5. Serienmail, 4. Kurzfragebogen

$time4 = strtotime('tomorrow 18:00:00 +3 days');
debug(date('d.m.Y. H:i', $time4));
mailSchedule(false, 5, $time4);

// 6. Serienmail, 5. Kurzfragebogen

$time5 = strtotime('tomorrow 18:00:00 +4 days');
debug(date('d.m.Y. H:i', $time5));
mailSchedule(false, 6, $time5);

// 7. Serienmail, 6. Kurzfragebogen

$time6 = strtotime('tomorrow 18:00:00 +5 days');
debug(date('d.m.Y. H:i', $time6));
mailSchedule(false, 7, $time6);

// 8. Serienmail, 7. Kurzfragebogen

$time7 = strtotime('tomorrow 18:00:00 +6 days');
debug(date('d.m.Y. H:i', $time7));
mailSchedule(false, 8, $time7);


Danke für Ihre Hilfe! :)

1 Answer

0 votes
by SoSci Survey (328k points)
selected by s252083
 
Best answer

Sieht schon ganz gut aus :)

Muss ich die Variable $time für die jeweiligen Tage anders benennen

Streng genommen müssen Sie nicht. Der Code wird von oben nach unten verarbeitet, und die Variabel bekommt sonst eben jedesmal einen anderen Wert. Es schadet aber auch nicht, unterschiedliche Namen zu verwenden.

Kann ich die Funktion strtotime() für die Tage 2-7 abändern (strtotime('tomorrow 18:00:00 +1 days'))

Es sieht so ganz gut aus. Wenn Sie diese Seite im Debug-Modus laufen lassen, sollten Sie die Zeiten angezeigt bekommen, sodass Sie prüfen können, ob alles passt.

by s252083 (175 points)
Es hat funktioniert!  Danke sehr :)

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

...