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 zusammen,
Ich möchte für eine Untersuchung eine Tagebuchstudie durchführen und bin dank diesem Forum auch schon weitergekommen, verzweifel aber an einer Aufgabe:
Die Probanden werden über einen Link rekrutiert und dann müssen sie sich über ein opt.In anmelden. Zuvor werden sie noch einer Gruppe zugewiesen (KG; EG gut; EG schlecht) und bekommen dementsprechend einen anderen Opt.In, damit sie unterschieden werden können. Anschließend sollen sie eine Einladung zu einer allgemeinen Umfrage bekommen, was ich soweit hinbekommen habe.
Danach sollen sie aber jeden Tag eine Einladung (für 14 Tage), passend zu ihrere Gruppe, bekommen, in der sie dann ihr "Tagebuch" führen. Daran scheitre ich momentan...

Vielen Dank für die Hilfe im voraus.

in SoSci Survey (dt.) by s109880 (190 points)

1 Answer

0 votes

Danach sollen sie aber jeden Tag eine Einladung (für 14 Tage), passend zu ihrere Gruppe, bekommen, in der sie dann ihr "Tagebuch" führen. Daran scheitre ich momentan...

Die Funktion mailSchedule() haben Sie bereits gefunden? Im Prinzip müssen Sie nach dem Opt-In nur 14-mal diese Befehl aufrufen und jeweils den Versand für eine andere Serienmail planen. Details gerne, wenn Sie die Problematik spezifizieren.

by SoSci Survey (92.4k points)
Vielen dank für die Nachricht!
Über den Befehl bin ich auch schon gestolpert, aber wenn ich das für 14 * 3 Gruppen machen möchte, müsste ich 42 Serienmails erstellen, ist das nicht ein wenig aufwendig? Also würde es da nicht eine einfachere Lösung geben?
Wenn nicht: wäre es dann trotzdem okay, wenn ich 14 mal den gleichen Fragebogen schicke, oder brauche ich dann auch 42 von denen?
> aber wenn ich das für 14 * 3 Gruppen machen möchte, müsste ich 42 Serienmails erstellen, ist das nicht ein wenig aufwendig?

Sie benötigen mindestens für jeden Tag eine Serienmail. Für die einzelnen Gruppen benötigen Sie m.E. keine gesonderten Serienmails. Da würde ich eher die Gruppenzugehörigkeit im jeweiligen Adresseintrag oder mit der "Datenbank für Inhalte" vermerken und auf diese dann innerhalb des Fragebogen abrufen. Ausnahme: Wenn sich die Serienmails auch inhaltlich unterscheiden sollen, dann benötigen Sie tatsächlich die komplette Anzahl. Aber Man kann Serienmails ja einfach duplizieren - es ist also eher ein ästhetisches Problem :)

> wäre es dann trotzdem okay, wenn ich 14 mal den gleichen Fragebogen schicke

Wenn das im Tagebuch so sein soll, dann können Sie das problemlos machen, ja. Allerdings es ist nicht unüblich am ersten und letzten Tag einen geringfügig modifizierten Fragebogen zu verwenden.
Klasse, vielen vielen dank für die Hilfe. Ich werde es dann wohl so machen, dass ich 42 Serienmails erzeuge.

mailSchedule(false, 2, strtotime('+1 day'));
mailSchedule(false, 3, strtotime('+2 day'));
mailSchedule(false, 4, strtotime('+3 day'));
mailSchedule(false, 5, strtotime('+4 day'));
mailSchedule(false, 6, strtotime('+5 day'));
.....

Würde ich dann nach der entsprechenden Opt.In eingeben, korrekt?
Wenn Sie es mit dem "false" verwenden möchten, können Sie es erst nach erfolgtem Opt-In (Teilnehmer klickt auf den Bestätigungslink) machen. Alternativ könnten Sie die Kennung aus der Opt-In-Variable als ersten Parameter in mailSchedule() verwenden. Kleiner Tipp noch:

for ($i=1; $i<=14; i++) {
  mailSchedule(false, $i + 1, strtotime('+'.$i.' day'));
}
Und das wäre dann "mailSchedule(value('A102'), 2, strtotime('+1 day'));" korrekt?

Was genau hat mit dem for ($i=1; $i<=14; i++) { auf sich? Entschuldigen sie die Fragerei, ich bin sehr unerfahren mit PHP-Code...
> Und das wäre dann "mailSchedule(value('A102'), 2, strtotime('+1 day'));" korrekt?

Ja, wenn der Befehl im selben Fragebogen wie die Opt-In-Frage steht. Aber das gesamte Procedere sollten sie ohnehin ein paar Mal testen.

> Was genau hat mit dem for ($i=1; $i<=14; i++) { auf sich?

Mit einer FOR-Schleife können Sie das Ganze in 3 Zeilen anstatt in 14 Zeilen programmieren. Die Variable $i wird dabei von 1 bis 14 hochgezählt und der mailSchedule()-Mittelteil mit jeder Ausprägung einmal aufgerufen.
Wäre es denn so Fehleranfälliger? Oder gibt es noch eine andere, bessere Variante die Mails auf den weg zu bringen?
Und ich müsste dann doch auch noch einen "IF" Befehl davor setzten, da ja die 3 Gruppen unterschiedliche Fragebögen bekommen, oder?


Ah klasse! Das ist natürlich genial und macht das ganz auch übersichtlicher.
> Wäre es denn so Fehleranfälliger?

Nein - es kommt lediglich auf Ihren Ablauf an, was praktikabler ist. Die eine Variante plant die Mails direkt nach dem Opt-In (Eingabe der Mailadresse), die andere erst in dem Fragebogen, der durch Klick in der Bestätigungsmail aufgerufen wird.

> Und ich müsste dann doch auch noch einen "IF" Befehl davor setzten, da ja die 3 Gruppen unterschiedliche Fragebögen bekommen, oder?

Ja. Deshalb auch der Tipp mit der FOR-Schleife :) Damit die Nummern der Serienmail stimmen, müssten Sie dann das +1 durch eine entsprechende andere Zahl ersetzen.
Also um das ganze nochmal für mich zusammenzufassen:

Ich habe nach der Gruppen Zuweisung folgenden Befehl:

if (value('A102') == 1) {
  question('A101');
} elseif (value('A102') == 2) {
  question('A104');
} elseif (value('A102') == 3) {
  question('A103');
}

Danach kommt dann der Befehl:

if (value('A102') == 1){
for ($i=1; $i<=14; i++) {
  mailSchedule(false, $i (durch Zahl der ersten Serienmail ersetzt), strtotime('+'.$i.' day'));
}
}
...das dann insgesamt 3x

Und an sich kann ich ja schon die erste Serienmail über den Bestätigungslink schicken, richtig? Müsste "ihn" also erst ab 2 hochzählen lassen.
Und das ganz kann einfach in eine "PHP-Box" schreiben, oder ist es besser das auf 2 Boxen oder eher 2 Seiten zu verteilen?

Vielen vielen dank für ihre Geduld ;)
Also ... wenn Sie das mailSchedule() direkt nach der Opti-In-Frage platzieren (also auf der Seite danach, hoffe ich), dann müssen Sie auch die Personenkennung mit reinnehmen. Sonst klappt es nicht.

if (value('A102') == 1) {
  $id = value('A101');
  for ($i=1; $i<=14; i++) {
    $mail = $i + 1;
    mailSchedule($id, $mail, strtotime('+'.$i.' day'));
  }
} elseif (value('A102') == 2) {
// u.s.w.
Vielen vielen dank!

Letzte Frage: "+1" muss ich dann durch die erste ID der Serienmail ersetzen?
Die Variable $i zählt von 1 bis 14. Wenn Sie +1 rechnen, bekommen Sie die Nummern 2 bis 15 als Serienmail-IDs. Wenn die erste Serienmail der zweiten Gruppe die Nummer 1 hat, würden Sie in Gruppe 2 also +15 rechnen.
Aber dann macht die Definition von $i davor ja keinen Sinn. Wenn ich das richtig verstehe definiert "for ($i=1; $i<=14; i++)" $i ja nur bis 14. Also wäre ID 14 ja gar nicht möglich? Ich kann "ihn" doch einfach hochzählen lassen, von 2-15 und dann für Gruppe 2 16-30 usw.... Wofür brauche ich jetzt die "+1". Die verkompliziert das ganz doch nur.
> Wofür brauche ich jetzt die "+1". Die verkompliziert das ganz doch nur.

Sie brauchen ja nicht nur die ID der Serienmail, sondern auch die Tage. Das $i wird deshalb auch im strtotime() verwendet.

> ja nur bis 14. Also wäre ID 14 ja gar nicht möglich?

Ähm ... doch, wenn $i=13 ist, dann ist $i+1=14. Was nicht möglich ist, ist die ID 1. Wenn ich Ihren Code oben korrekt interpretiere, dann haben Sie diese anderweitig verwendet.
...