0 votes
in SoSci Survey (dt.) by s258936 (110 points)
edited by SoSci Survey

Hi, ich habe eine Frage zu meiner Studie für die Bachelor-Arbeit.
Ich möchte eine Tagebuchstudie durchführen, die 7 Tage lang geht.
Fragebogen A1 dient als Rekrutierung. Die Personen geben ihre E-Mail-Adresse an und ihnen wird Fragebogen A2 zugeschickt. Das hat schon mal geklappt.

Wenn Fragebogen A2 bearbeitet wurde, soll am nächsten Tag um 7 Uhr Fragebogen A3 folgen. Wurde A3 beantwortet, soll am nächsten Tag um 7 Uhr A4 folgen. Wurde A4 beantwortet, soll am nächsten Tag um 7 Uhr A5 folgen. Dasselbe Prozedere bis A9.

Ich habe also folgenden PHP Code bei Fragebogen A2 eingefügt:

mailSchedule(false, 2, ('tomorrow 07:00:00'));
mailSchedule(false, 3, ('tomorrow + 1 day 07:00:00'));
mailSchedule(false, 4, ('tomorrow + 2 days 07:00:00'));
mailSchedule(false, 5, ('tomorrow + 3 days 07:00:00'));
mailSchedule(false, 6, ('tomorrow + 4 days 07:00:00'));
mailSchedule(false, 7, ('tomorrow + 5 days 07:00:00'));
mailSchedule(false, 8, ('tomorrow + 6 days 07:00:00'));
mailSchedule(false, 9, ('tomorrow + 7 days 07:00:00'));

Jetzt möchte ich, dass die Studie jeden Tag nur bis 11 Uhr gültig ist. Das habe ich über diesen PHP Code probiert. Den habe ich unter A3, A4, A5, A6, A7, A8 und A9 gepackt.

$info = panelData();
if ($info) {
 $sent = $info['mailsent'];
 if ($sent < strtotime('-4 hours')) {
  text('ZS01');
  buttonHide();
  pageStop();
 }
else
{(goToPage('next'));
}
}

Das funktioniert allerdings nicht. Ich bekomme keine Fehlermeldungen angezeigt, aber es werden einfach keine Serienmails verschickt.

Hat jemand eine Idee, was ich falsch gemacht habe oder was hier fehlt?

Ich würde mich wirklich sehr über eine Rückmeldung freuen.

Danke!

1 Answer

0 votes
by SoSci Survey (327k points)

Wenn Fragebogen A2 bearbeitet wurde, soll am nächsten Tag um 7 Uhr Fragebogen A3 folgen

Was passiert, wenn A2 nicht beantwortet wurde? Ihr Code wird die weitere Einladungen dennoch senden.

Das habe ich über diesen PHP Code probiert.

Das else und alles danach können Sie m.E. weglassen. Aber ansonsten sieht das so schlecht nicht aus. Was zeigt denn die Debug-Information dazu an, wenn Sie folgenden Code ergänzen?

$info = panelData();
debug($info);

if ($info) {
  $sent = $info['mailsent'];
  debug($sent);
  debug(strtotime('-4 hours'));

  if ($sent < strtotime('-4 hours')) {
    text('ZS01');
    buttonHide();
    pageStop();
  }
}

Klar, dass Sie sich erst eine Serienmail senden müssen, um das zu testen. Sie können aber einfach eine neue Adresse importieren und dann unten mit dem Briefumschlag direkt den Versand einer Ihrer Serienmails an die Adresse auslösen.

Und zum Testen können Sie aus -4 hours natürlich auch mal -4 minutes machen.

by s258936 (110 points)
Vielen Dank für die Rückmeldung! Ich habe es so probiert und es funktioniert leider nicht. Es werden keine Serienmails verschickt. Mit der Debug-Information muss ich mich noch mal belesen, das kenne ich noch nicht. Dann schaue ich noch mal!
by s258936 (110 points)
Habe nun diesen Code entfernt:
$info = panelData();
if ($info) {
 $sent = $info['mailsent'];
 if ($sent < strtotime('-4 hours')) {
  text('ZS01');
  buttonHide();
  pageStop();
 }
else
{(goToPage('next'));
}
}

Es werden hiermit:

mailSchedule(false, 2, ('tomorrow 07:00:00'));
mailSchedule(false, 3, ('tomorrow + 1 day 07:00:00'));
mailSchedule(false, 4, ('tomorrow + 2 days 07:00:00'));
mailSchedule(false, 5, ('tomorrow + 3 days 07:00:00'));
mailSchedule(false, 6, ('tomorrow + 4 days 07:00:00'));
mailSchedule(false, 7, ('tomorrow + 5 days 07:00:00'));
mailSchedule(false, 8, ('tomorrow + 6 days 07:00:00'));
mailSchedule(false, 9, ('tomorrow + 7 days 07:00:00'));

keine E-Mails versendet.

In welchem Fragebogen und an welcher Stelle des Fragebogens muss das denn zur automatischen Abarbeitung des Codes stehen? Habe es so wie in der Anleitung gemacht, aber es sendet leider nicht.

Vielen Dank.
by SoSci Survey (327k points)
> Habe nun diesen Code entfernt:

Naja, der eine Code ist für die Unterbrechung - das mailSchedule() ist für das Versenden der E-Mails. Sie sollten wahrscheinlich beides machen.

> keine E-Mails versendet

Wird die Seite mit dem Code denn ausgeführt - und wann erfolgt das?

> In welchem Fragebogen und an welcher Stelle des Fragebogens muss das denn zur automatischen Abarbeitung des Codes stehen?

An der Stelle, an der Sie den Serienmail vrobereiten möchten. Also zum Beispiel auf der ersten Seite des Fragebogens, der nach der Opt-In-Bestätigung der E-Mail-Adresse angezeigt wird. Also mal angenommen, dass Sie mit Opt-In arbeiten und die Adressen nicht schon vorher kennen?
by s258936 (110 points)
Vielen Dank für die Antwort! Ich habe einen anderen Code aus einer anderen Anleitung verwendet und jetzt funktioniert es.
by s258936 (110 points)
Ich benötige bitte noch mal Hilfe.

Habe nun folgenden Code auf der ersten Seite des Fragebogens, der nach der Opt-In-Bestätigung der E-Mail-Adresse angezeigt wird:

// erste E-Mail täglich um 07:00 Uhr
mailSchedule(false, 2, strtotime('tomorrow 07:00:00'));
mailSchedule(false, 3, strtotime('tomorrow + 1 day 07:00:00'));
mailSchedule(false, 4, strtotime('tomorrow + 2 days 07:00:00'));
mailSchedule(false, 5, strtotime('tomorrow + 3 days 07:00:00'));
mailSchedule(false, 6, strtotime('tomorrow + 4 days 07:00:00'));
mailSchedule(false, 7, strtotime('tomorrow + 5 days 07:00:00'));
mailSchedule(false, 8, strtotime('tomorrow + 6 days 07:00:00'));
// Erinnerung täglich um 10:00 Uhr
mailSchedule(false, 9, strtotime('tomorrow 10:00:00'), ['status' => 'no-response']);
mailSchedule(false, 10, strtotime('tomorrow + 1 day 10:00:00'), ['status' => 'no-response']);
mailSchedule(false, 11, strtotime('tomorrow + 2 days 10:00:00'), ['status' => 'no-response']);
mailSchedule(false, 12, strtotime('tomorrow + 3 days 10:00:00'), ['status' => 'no-response']);
mailSchedule(false, 13, strtotime('tomorrow + 4 days 10:00:00'), ['status' => 'no-response']);
mailSchedule(false, 14, strtotime('tomorrow + 5 days 10:00:00'), ['status' => 'no-response']);
mailSchedule(false, 15, strtotime('tomorrow + 6 days 10:00:00'), ['status' => 'no-response']);

Das funktioniert beides super.

Aber ich habe noch keine Idee, und leider nichts gefunden, wie ich die Uhrzeit eingrenze, also nur von 7:00 Uhr bis 11:00 Uhr eine Teilnahme möglich ist.
Wird nach 11.00 Uhr der in der E-Mail sich befindende link angeklickt, kommt ein Text.

Wo muss den welcher  PHP Code hierfür sein? Auch auf der ersten Seite des Fragebogens, der nach der Opt-In-Bestätigung der E-Mail-Adresse angezeigt wird?

Also alles an einer Stelle?

Und wie kann ich Teilnehmende welche bis 11:00 Uhr nicht teilgenommen haben aus den restlichen Tagen gänzlich von der Studie entfernen?

Lieben Dank im voraus!
by SoSci Survey (327k points)
> wie ich die Uhrzeit eingrenze, also nur von 7:00 Uhr bis 11:00 Uhr eine Teilnahme möglich ist.

Am einfachsten über folgenden PHP-Filter:

$hour = (int)date('H');
if (($hour < 7) || ($hour > 10)) {
  text('Text_ID');
  buttonHide();
  pageStop();
}

Dieser Text würde an die Stelle kommen, wo Sie die Leute abweisen möchten. Also in dem Fragebogen, der von Serienmail 2-8 aufgerufen wird.

> Und wie kann ich Teilnehmende welche bis 11:00 Uhr nicht teilgenommen haben aus den restlichen Tagen gänzlich von der Studie entfernen?

Riskant ... denn dann verlieren Sie schnell viele Teilnehmer:innen, auch wenn die es an einem Tag nur mal nicht schaffen. Ich würde eher empfehlen, post-hoc zu bereinigen.

Eine mögliche Lösung bestünde darin, dass Sie die neue Einladung immer erst planen, wenn jemand pünktlich teilgenommen hat. Also z.B. die Zeilen

mailSchedule(false, 3, strtotime('tomorrow + 1 day 07:00:00'));
mailSchedule(false, 10, strtotime('tomorrow + 1 day 10:00:00'), ['status' => 'no-response']);

erst aufrufen, wenn jemand den Fragebogen von Tag 1 aufruft. Nicht gleich im Nach-dem-Opt-In-Fragebogen. Dort käme nur

mailSchedule(false, 2, strtotime('tomorrow 07:00:00'));
mailSchedule(false, 9, strtotime('tomorrow 10:00:00'), ['status' => 'no-response']);

Und wenn Sie dafür nicht 6 einzelne Fragebögen machen möchten, dann fragen Sie per panelData() ab, über welche Serienmail jemand kam.

$info = panelData();
$mailingID = $info[''mailing'];

if ($mailingID == 2) {
  mailSchedule(false, 2, strtotime('tomorrow 07:00:00'));
  mailSchedule(false, 9, strtotime('tomorrow 10:00:00'), ['status' => 'no-response']);
}
if ($mailingID == 3) {
  mailSchedule(false, 4, strtotime('tomorrow + 2 days 07:00:00'));
  mailSchedule(false, 11, strtotime('tomorrow + 2 days 10:00:00'), ['status' => 'no-response']);
}
etc.

Das wie gesagt in dem Fragebogen, der von Mailing ID 2-8 aufgerufen wird.

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

...