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

Liebes Support Team,
ich habe jetzt meinen PHP Code für die tägliche Versendung eines Fragebogens zum gleichen Zeitpunkt nach Vorgabe zusammengebastelt. Ziel: egal an welchem Tag jemand anfängt bekommt er so einen Tag später den ersten Fragebogen und dann jeden Tag noch einen.
Sorry, ist nicht so elegant, wie Sie das können, aber passt, oder :)

mailSchedule(false, 2, strtotime('+1 day, 18:00'));
mailSchedule(false, 3, strtotime('+2 day, 18:00'));
mailSchedule(false, 4, strtotime('+3 day, 18:00'));
mailSchedule(false, 5, strtotime('+4 day, 18:00'));
mailSchedule(false, 6, strtotime('+5 day, 18:00'));
mailSchedule(false, 7, strtotime('+6 day, 18:00'));
mailSchedule(false, 8, strtotime('+7 day, 18:00'));

Jetzt wollte ich noch den Zugang beschränken, das heißt, wer bis 06:00 am Folgetag den jeweiligen Fragebogen nicht beantwortet hat, der kann den Link nicht mehr nutzen.

Ich hatte zuerst

mailSchedule(false, 2, expire('+2 day, 06:00'));
mailSchedule(false, 3, expire('+3 day, 06:00'));
mailSchedule(false, 4, expire('+4 day, 06:00'));
Usw.

Da kriege ich die Meldung: Funktion expire nicht bekannt.

Wenn ich Ihren Vorschlag ganz oben auf der Seite eins von A2 einbaue:

if ((time() < strtotime('2021-01-28 18:00:00') || (time() > strtotime('2021-01-29 06:00:00')) {
text('whatever');
buttonHide();
pageStop();
}

bekomme ich die Warnung: Die Anzahl öffnender Klammern (7) und schließender Klammern (5) stimmt hier nicht überein.

Ich sehe aber das Problem nicht, sorry.

Außerdem soll ja, egal an welchem Tag jemand anfängt der Link für den Fragebogen des Tages jeden TN je nach Tag der Teilnehme am folgenden Tag um 06:00 ungültig werden.

Sie haben geschrieben: Falls der Versandzeitpunkt variiert, können Sie den Tag über panelData() ermitteln.
Da bräuchte ich auch nochmal Hilfe. Da es mit meiner einfachen Lösung, für jede Serienmail einen eigenen Befehl zu schreiben, ja nicht funktioniert. Wie und wo setze ich panelData() in den Code?

Vielen Dank im Voraus

in SoSci Survey (dt.) by s166812 (160 points)

1 Answer

0 votes

Das expire wird als als Schlüssel in einem Arrray übergeben, so wie in der Anleitung für status erklärt, also z.B.:

mailSchedule(false, 2, strtotime('+1 day, 18:00'), [
  'expire' => strtotime('+2 day, 06:00')
]);

Die Anzahl öffnender Klammern (7) und schließender Klammern (5) stimmt hier nicht überein.

Vor dem zweiten time() ist eine Klammer zu viel. Oder am Ende der Bedingung eine zu wenig.

by SoSci Survey (178k points)
...