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

0 votes

Hallo,

es geht um eine mehrwellige Befragung mit T5 Zeitpunkten.

Am Ende des Rekrutierungsfragebogens wird mittels Opt-In die E-Mail-Adresse der Teilnehmenden abgefragt. Danach soll ein PHP-Code mit mailSchedule() folgen, der alle nachfolgenden Serienmails + Erinnerungsmails koordiniert.

Von T1 bis T3 ist alles klar; die Abfragen erfolgen wöchentlich:

$personID = value('EM01');  // Personenkennung aus der Opt-In Frage auslesen
$zeitpunkt = mailSchedule($personID, 1, 0);  // Serienmail 1 sofort 
$zeitpunkt = mailSchedule($personID, 2, strtotime('+7 days'));  // Serienmail 2 nach 1 Woche
$zeitpunkt = mailSchedule($personID, 3, strtotime('+14 days'));  // Serienmail 3 nach 2 Wochen

Frage 1: Nun wird im Rekrutierungsfragebogen auch ein Datum abgefragt, welches sich individuell nach Teilnehmenden unterscheidet. Ein Tag nach dem individuell vom Probanden angegebenen Datum soll die Serienmail zu T4 verschickt werden. Das Datum ist des Items PR06_01. Ich frage mich nun, wie value('PR06_01') in mailSchedule() eingefügt werden muss.

Frage 2: Wir beabsichtigen möglicherweise dies noch etwas detaillierter zu gestalten und nach bis zu 10 unterschiedlichen Daten (Datum eines bestimmten Ereignisses) zu fragen. In diesem Fall möchten wir, dass die Serienmail zu T4 einen Tag nach dem spätesten Datum (aus den bis zu 10) versendet wird.

Wäre Folgendes dann zielführend?

$lastdate = max('PR06_01', 'PR06_02', 'PR06_03', 'PR06_04', 'PR06_05', 'PR06_06', 'PR06_07', 'PR06_08', 'PR06_09', 'PR06_10');
$personID = value('EM01');  // Personenkennung aus der Opt-In Frage auslesen
$zeitpunkt = mailSchedule($personID, 1, 0);  // Serienmail 1 sofort
$zeitpunkt = mailSchedule($personID, 2, strtotime('+7 days'));  // Serienmail 2 nach 1 Woche
$zeitpunkt = mailSchedule($personID, 3, strtotime('+14 days'));  // Serienmail 3 nach 2 Wochen
$zeitpunkt = mailSchedule($personID, 4, date('Y-m-d', strtotime($lastdate . " + 1 day"));  // Serienmail 4 nach individuellem Datum

Vielen Dank!

in SoSci Survey (dt.) by s081291 (120 points)
edited by s081291

1 Answer

0 votes

Ich frage mich nun, wie value('PR06_01') in mailSchedule() eingefügt werden muss.

Wenn Sie als Format für die Texteingabe (?) PR06_01 eingestellt haben, dass es ein Datum sein muss, dann macht SoSci Survey daraus automatisch ein einheitliches Datumsformat. Dieses können Sie an strtotime() übergeben.

Und dann benötigen Sie noch ein strtotime() für den zusätzlichen Tag.

$eingabe = strtotime(value('PR06_01'));
$versand = strtotime('+1 day', $eingabe);
mailSchedule(false, 4, $versand);

In diesem Fall möchten wir, dass die Serienmail zu T4 einen Tag nach dem spätesten Datum (aus den bis zu 10) versendet wird.

Nun - hierfür müssen Sie nur die eingegeben Daten in einem Array zusammenfassen, z.B. mittels valueList(). Dann das Array absteigend sortieren mittels rsort(). Anschließend nehmen Sie den ersten Wert im Array und fahren damit fort wie oben dargestellt.

by SoSci Survey (102k points)
...