0 votes
in SoSci Survey (dt.) by s097987 (200 points)
closed by SoSci Survey

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

closed with the note: Es liegen keine neuen Informationen zur Frage vor.
by SoSci Survey (327k points)
Welche Nummern haben denn die Serienmails für T1?

Mit der Auswahl in I311 hängt es nicht zusammen, oder?

Zeigt die Debug-Information irgendwas an? Wenn nicht, sollte ich ihr das zeitnah beibringen. Wie ist denn Ihr Zeitplan? Wann muss es laufen?

Sicher, dass der Code bei EG und KG exakt gleich ist? Nicht, dass da die Nummer einer Serienmail vertauscht ist oder eine Klammer an einer anderen Stelle steht...

Unklar ist mir auch, was es mit den 5-mal mailSchedule() auf sich hat, in dem Fall dass schon 28 Tage vergangen sind?
by s097987 (200 points)
Hallo!

Die Serienmails für T1 haben die Nummern (für die EG):
12, 34, 35, 83, 84
und für die KG:
89, 90, 91, 92, 93

Die Auswahl I311 hat in einem Vortest das gewünscht Ergebnis geliefert, also denke ich, dass damit alles soweit in Ordnung ist.  

Ich bin nicht sicher, ob ich die Debug Information richtig auslese, aber mE steht dort ebenfalls nichts drin, was mich weiterbringt. Auch mithilfe des debug() Befehls wird mir nichts Relevantes angezeigt.

Die Codes sind exakt die gleichen. Ich habe auch schon den Code der KG kopiert und entsprechend nur die Nummern der Serienmails (die alle existieren) für die EG geändert, da die beiden Gruppen ja getrennte Fragebögen haben. Aber sonst ist da alles gleich (anbei noch einmal der Code für die KG)

$id = caseSerial();
$data = dbGet($id);
if ($data) {
  $sent = (int)$data[0];
  if ($sent < strtotime('-28 days')) {
    mailSchedule(false, 89, strtotime('+2 day 5:00'));
mailSchedule(false, 90, strtotime('+3 day 5:00'));
mailSchedule(false, 91, strtotime('+4 day 5:00'));
mailSchedule(false, 92, strtotime('+6 day 5:00'));
mailSchedule(false, 93, strtotime('+8 day 5:00'));
}
elseif (value('I311') == 1) {
  mailSchedule(false, 11, 60);
mailSchedule(false, 32, strtotime('+3 day 5:00'));
mailSchedule(false, 33, strtotime('+5 day 5:00'));
mailSchedule(false, 80, strtotime('+7 day 5:00'));
mailSchedule(false, 119, 30);
}
elseif (value('I311') == 2) {
  mailSchedule(false, 11, 60);
mailSchedule(false, 32, strtotime('+4 day 5:00'));
mailSchedule(false, 33, strtotime('+6 day 5:00'));
mailSchedule(false, 80, strtotime('+8 day 5:00'));
mailSchedule(false, 120, 30);
}}

Die anderen Serienmails sind Erinnerungsmails für T1, die die TN zugeschickt bekommen.

Es wäre schön, wenn wir diese Woche noch an den Start gehen könnten.

Vielen herzlichen Dank für Ihre Hilfe!!
by SoSci Survey (327k points)
Kann es sein, dass in der KG die vorletzte Zeile falsch ist?

mailSchedule(false, 120, 30);

Ich bringe mailSchedule() noch bei, dass es eine Zeile in der Debug-Information hinterlässt, dann sollte das Ganze besser nachvollziehbar werden.
by s097987 (200 points)
Vielen Dank, das hilft bestimmt weiter!

Bei den Serienmails 119 und 120 sollen je nach Auswahl in I3 Emails mit dem Text mit "wie gewünscht erhalten Sie die nächste Übung in 2 (3) Tagen, am Datum x" versendet werden. Einmal eben mit 2 und einmal mit 3 Tagen und dem entsprechenden Datum. Vielen Dank aber für den Hinweis!
by SoSci Survey (327k points)
Es dauerte ein wenig länger - was damit zusammenhängt, dass die Debug-Information nur wenig Sinn macht, wenn man es dann bei Folge-Fragebögen nicht mehr sieht.

Deshalb kann man in einem Adresseintrag nun ein Kreuzchen setzen, dass man in den Debugging-Modus starten will. Alle Fragebogen, die über so einen Adresseintrag aufgerufen werden, sollten die Debugging-Information zeigen.

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

...