0 votes
in SoSci Survey (dt.) by s098847 (215 points)

Hallo,

ich möchte gerne auf einer Startseite erheben, wann Personen an einer Veranstaltung teilnehmen werden (Termin in der Zukunft). Je nachdem wann dieser Termin ist, sollen sie 5 Tage vor dem Kurs eine Mail mit dem Link zur Befragung bekommen (ggf. 2 Tage vorher noch eine Erinnerung). Sollte Termin zum Bespiel direkt am nächsten Tag sein, so sollten sie dann direkt zum Fragebogen geleitet werden bzw. Direkt mit dem Fragebogen beginnen können. Gibt es die Möglichkeit, dass so umzusetzen?

Danke schon einmal für die Unterstützung.

1 Answer

0 votes
by SoSci Survey (305k points)
selected by s098847
 
Best answer

Die Abfrage eines Datum erledigen Sie am besten mit einem Texteingabefeld, welches ein Datum erwartet ... dann kümmert sich SoSci Survey um die korrekte Formatierung.

Mittels value() können Sie die Angabe auf der folgenden Seite im PHP-Code abrufen und mittels strtotime() in einen sog. Zeitstempel umwandeln, mit dem Sie rechnen können. Zum Beispiel können Sie rechnen, ob das Datum mehr als einen Tag in der Zukunft liegt (Vorsicht, achten sie auf die aktuelle Uhr Zeit!) u.s.w.

Und Sie können den Zeitstempel in der Funktion mailSchedule() verwenden, um den Versand einer Serienmail an den Teilnehmer zu terminieren. Damit das klappt, brauchen Sie die Mailadresse entweder vorher im Mailverteiler oder Sie gehen vor, wie hier beschrieben: Mehrwellige Befragungen bei Selbstrekrutierung.

by s098847 (215 points)
Danke für den Hinweis. Ich habe nun also einen Zeitstempel für das Datum ihrer Teilnahme an einem Kurs erstellt. Das Datum müssen sie in einer Text-Variable TL06_01 eingeben (hier öffnet sich ein Kalender zur Eingabe des Datums).

Ich habe nun folgenden PHP Code erstellt:

$Kurs = strtotime(value('TL06_01'));  // Zeitstempel des Kurses

Ich möchte nun folgendes überprüfen,
- wenn dieses Datum des Kurses in den nächsten 5 Tagen ist, dann sollen sie zu einem Fragebogen (A) weitergeleitet werden,

- wenn das Datum des Kurses in der Vergangenheit liegt, aber nach einem bestimmten Stichtag ist (z.B. Sie geben an am 15.01.2020 an einem Kurs teilgenommen zu haben, die Studie läuft seit dem 10.01.2020), dann sollen sie zu einem Fragebogen B weitergeleitet werden. Personen, die angeben, dass ihr Kurs vor diesem Datum war (also zum Beispiel am 5.01.2020), sollen dann auf eine Infoseite geleitet werden.

- wenn das Datum des Kurses nach einem bestimmten Datum ist, dann sollen sie auf eine Infoseite geleitet werden (Ihre Teilnahme wäre dann zum Beispiel außerhalb des Testzeitraums)

Lassen sich diese Punkte umsetzen? Danke schon einmal.
by SoSci Survey (305k points)
> wenn dieses Datum des Kurses in den nächsten 5 Tagen ist, dann sollen sie zu einem Fragebogen (A) weitergeleitet werden,

Dann würde der nächste Filter aussehen wie folgt:

if ($Kurs <= strtotime('24:00:00 +5 days ')) {
  // Weiterleitung zum Fragebogen ... wie auch immer das realisiert ist
  goToQuestionnaire('fraboA');
}

Den aktuellen Zeitpunkt bekommen Sie mit time() - und ansonsten können Sie auch alle anderen Daten einfach mit strototime('2020-01-10') u.s.w. für Filter in Zeitstempel verwandeln.
by s098847 (215 points)
Vielen Dank. Die Filter klappen auch so weit. Leider bekomme ich bei der Verbindung der verschiedenen Filter immer eine Fehlermeldung und ich komme leider nicht auf den Fehler. Ich habe jetzt einen fiktiven Zeitraum vom 10.01.2020 - 28.02. 2020 angenommen, wenn Personen das Datum ihres Kurses außerhalb dieses Zeitraums haben, dann sollen sie auf eine Seite Weitergeleitet werden, die sie darüber informiert, dass sie außerhalb des Studienzeitraumes mitmachen. Ansonsten werden sie je nach Zeitpunkt auf unterschiedliche Fragebögen weitergeleitet. Einzeln funktionieren die Filter, nur in der Kombination nicht:

if ($Kurs <= strtotime('2020-01-10')) {  // Wenn vor 10.01.
  goToPage('Out');   // Weiterleitung zur Out-Seite, da Kurs vor 10.01.
} else if ($Kurs => strtotime('2020-02-28')) { // nach dem 28.02.
  goToPage('Out'); // Weiterleitung zur Out-Seite, nach dem 28.02.
} else if ($Kurs <= strtotime('24:00:00 +5 days ')) { // Wenn Kurs in den nächsten 5 Tagen
goToQuestionnaire('A2'); // Weiterleitung zum FB
} else if ($Kurs <= strtotime('24:00:00 -1 days ')) {  // Wenn Kurs schon vorbei  goToQuestionnaire('B'); // Weiterleitung zum Fragebogen B
} else {
  html('<p>Sie haben keine Antwort gegeben!</p>');
}
by SoSci Survey (305k points)
>  Leider bekomme ich bei der Verbindung der verschiedenen Filter immer eine Fehlermeldung

Was bei Fehlermeldungen immer ganz besonders wichtig ist: Wie lauten diese genau?
by s098847 (215 points)
Sorry, darauf hätte ich auch selbst kommen können. Hier die Fehlermeldung:


Im PHP-Code trat ein Fehler auf.

Fehler im Fragebogen: Befehl oder String (Text) nicht abgeschlossen

    Hinter einem Befehl wie z.B. question() steht kein Strichpunkt oder
    ein String (Text in Anführungszeichen) ist nicht abgeschlossen oder
    im String selbst kommt ein Anführungszeichen vor, z.B. html('Mach's besser!'); – in diesem Fall stellen Sie dem Anführungszeichen einen Backslash (\) voran.
    Möglicherweise stimmen die öffnenenden und schließenden geschweiften Klammern für Anweisungsblöcke auch nicht überein.

PHP-Code

003 $Kurs = strtotime(value('TL06_01'));  
004
005 if ($Kurs <= strtotime('2020-01-10')) {  
006   return 'go:Out';   
007 } else if ($Kurs => strtotime('2020-02-28')) {
008   return 'go:Out';
009 } else if ($Kurs <= strtotime('24:00:00 +5 days ')) {
010 {
by SoSci Survey (305k points)
Puh ... der war Fehler wirklich gut versteckt - und die Fehlermeldung im vorliegenden Fall leider irreführend. Aber so ein Suchbild am Freitag, warum nicht...

Also: In Zweile 007 schreiben Sie

$Kurs => strtotime

Tatsächlich muss das Größer-als-Zeichen aber vor dem Gleichheitszeichen kommen, sonst hat das in PHP eine andere Bedeutung.

$Kurs >= strtotime
by s098847 (215 points)
Wow, vielen Dank. Perfekt!!!

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

...