Liebes Sosci Support Team,
eine hoffentlich letzte (aber sehr zentrale) Frage, bevor die Erhebung nun nächste Woche an den Start gehen darf.
Es handelt sich um ein Training mit sieben Fragebögen, die mit Serienmails verknüpft sind (T0 (Fragebögen prä), I1-I5 (Trainingseinheiten, jeweils getrennte Fragebögen für EG und KG) und T1 (Fragebögen post)). Die Teilnehmenden können entscheiden, ob sie die Einladung zur nächsten Trainingseinheit in 2 oder 3 Tagen erhalten möchten. Das Training soll insgesamt nicht länger als einen Monat in Anspruch nehmen und alle Teilnehmenden sollen an mindestens 3 Einheiten teilnehmen. Sollte ein Teilnehmer es daher nicht schaffen, an allen Trainingseinheiten „fristgerecht“ teilzunehmen, soll er, wenn er einen Trainings-Fragebogen aufruft und nun aber die Dauer von einem Monat schon überschritten hat (ab I3) die nächste Einladung zu T1 erhalten und die noch fehlenden Trainingseinheiten (I4 und I5) überspringen.
Folgende PHP-Codes sind nun in den Fragebögen:
Auf Seite 1 in T0 (in dem später auf den Seiten auch ein Zufallsgenerator für die Randomisierung in KG und EG ist):
$id = caseSerial();
dbSet($id, strtotime('+1 day')); //in die Datenbank schreiben
Ab I3 (hier ändern sich lediglich die Bezeichnung für die Serienmails und für die Tag-Auswahl-Variable, ansonsten bleibt dieser Code bei allen Trainingseinheiten (I3-I5) und für beide Gruppen (KG vs. EG) gleich):
$id = caseSerial();
$data = dbGet($id);
if ($data) {
$sent = (int)$data[0];
if ($sent < strtotime('-28 days')) { //abrufen, ob seit der ersten Mail schon mehr als ein Monat vergangen ist, wenn ja dann T1 senden
mailSchedule(false, 12, strtotime('+2 day 5:00'));
mailSchedule(false, 34, strtotime('+3 day 5:00'));
mailSchedule(false, 35, strtotime('+4 day 5:00'));
mailSchedule(false, 83, strtotime('+6 day 5:00'));
mailSchedule(false, 84, strtotime('+8 day 5:00'));
}
elseif (value('I311') == 1) { //I311 ist die Tag-Auswahl-Variable (Einladung in 2 o. 3 Tagen)
mailSchedule(false, 8, 60); //hier noch mit gekürzten Zeiten für den Test
mailSchedule(false, 40, 30);
mailSchedule(false, 26, strtotime('+3 day 5:00'));
mailSchedule(false, 27, strtotime('+5 day 5:00'));
mailSchedule(false, 71, strtotime('+7 day 5:00'));
}
elseif (value('I311') == 2) {
mailSchedule(false, 8, 60);
mailSchedule(false, 47, 30);
mailSchedule(false, 26, strtotime('+4 day 5:00'));
mailSchedule(false, 27, strtotime('+6 day 5:00'));
mailSchedule(false, 71, strtotime('+8 day 5:00'));
}}
Dieses Vorgehen funktioniert scheinbar einwandfrei für die KG. Mich wundert aber, dass trotz exakt gleicher Codes (mit lediglich anderen Serienmail IDs), dass es bei der EG nicht funktioniert. Diese erhält leider immer sofort die Einladung zu T1, auch wenn die maximale Zeitdauer von 28 Tagen noch nicht überschritten ist.
Ich habe Folgendes ausprobiert:
- Für beide Gruppen verschiedene Schlüssel in die Datenbank schreiben ($idK = … und $idE = …)
- Diese Schlüssel nicht auf Seite 1 von T0 schreiben, sondern auf eine Seite, die jeweils nur die eine oder die andere Gruppe sieht (also nach der Randomisierung, aber noch im Fragebogen von T0).
- Die zweite geschweifte Klammer nicht ans Ende sondern an die obere Stelle (nach dem -28Tage Code vor das erste elseif) zu setzen.
Alles liefert leider bisher nicht das erwünschte Ergebnis. Können Sie mir weiterhelfen?
Das Projekt heißt Selbstmitgefühl, Perfektionismus, soziale Ängstlichkeit.
Vielen herzlichen Dank noch einmal für Ihre tolle Unterstützung!
Viele Grüße