0 votes
ago in SoSci Survey (dt.) by s343721 (120 points)
edited ago by SoSci Survey

Liebes SoSci Team,

beim erstellen von Serienmails in Abhängigkeit von einem bestimmten Datum komme ich leider nicht weiter. Ich habe mich bereits an den Antworten auf andere Fragen im Online-Support orientiert, aber finde keine Lösung.

Das Problem ist: Mit dem untenstehenden Code werden nur Serienmails erstellt, die ab heute in 8 Wochen, 9 Wochen usw. versendet werden. Das Datum, was Teilnehmende in der Befragung angeben (unten Variable SD23_01), scheint nicht beachtet zu werden.

Finden Sie vielleicht irgendeinen Fehler in folgendem Code? Vielen Dank im Voraus!!

// Versandzeitpunkte definieren
$Entbindungsdatum = value('SD23_01');  // SD23_01 ist ein string im Format 2025-11-29

$sendDateT2 = strtotime($Entbindungsdatum.'08:00:00 +8 weeks');
$sendDateT2b = strtotime($Entbindungsdatum.'08:00:00 +9 weeks');
$sendDateT2c = strtotime($Entbindungsdatum.'08:00:00 +10 weeks'); 

$sendDateT3 = strtotime($Entbindungsdatum.'08:00:00 +26 weeks');
$sendDateT3b = strtotime($Entbindungsdatum.'08:00:00 +27 weeks');
$sendDateT3c = strtotime($Entbindungsdatum.'08:00:00 +28 weeks'); 

// Einladungsmails verschicken
mailSchedule(false, 2, $sendDateT2);
mailSchedule(false, 3, $sendDateT3);

// Erinnerungsmails verschicken
mailSchedule(false, 4, $sendDateT2b, ['status' => 'no-response']);
mailSchedule(false, 5, $sendDateT2c, ['status' => 'no-response']);

mailSchedule(false, 6, $sendDateT3b, ['status' => 'no-response']);
mailSchedule(false, 7, $sendDateT3c, ['status' => 'no-response']);
ago by s343721 (120 points)
edited ago by s343721
Danke für die super schnelle Antwort! Leider hat es das Leerzeichen nicht gelöst.

Beim debug kam raus:
$Entbindungsdatum = (string)

Ich verwende nun beim definieren des Entbindungsdatums  zusätzlich strtotime(). Dabei kommt beim debug
$Entbindungsdatum = false (boolean)

Mit folgendem debug: debug(date('d.m.Y H:i', $Entbindungsdatum)) erhalte ich die Information, dass das Datum der 01.01.1970 um 01:00 ist, obwohl ich ein anderes Datum eingegeben hatte.  Ist der  01.01.1970 ein default und warum könnte es dazu kommen? Vielen Dank!

1 Answer

0 votes
ago by SoSci Survey (358k points)

Ich glaube, da fehlt einfach nur ein Leerzeichen.

Nehmen wir an, die Variable $Entbindungsdatumhat den Wert "2025-11-29", dann ergibt $Entbindungsdatum.'08:00:00' das Ergebnis "2025-11-2908:00:00".

Daraus macht strtotime() kein gültiges Datum. Versuchen Sie es bitte mal mit Leerzeichen vor dem '08', also...

$sendDateT2 = strtotime($Entbindungsdatum.' 08:00:00 +8 weeks');

Wichtig, dass das Leerzeichen hinter dem Anführungszeichen kommt, nicht davor. Ob das Ergebnis stimmt, können Sie einfach kontrollieren:

debug($Entbindungsdatum);
debug($Entbindungsdatum.' 08:00:00');
debug(date('d.m.Y H:i', $sendDateT2);
ago by s343721 (120 points)
edited ago by s343721
Ich vermute, ich habe ein ähnliches Problem wie hier, dort wird dann auch der 01.01.1970 eingefügt: https://support.soscisurvey.de/?qa=40748/weitere-problematik

Die Lösung dort, strototime(value() um die Datumsangabe zu machen, löst nur leider mein Problem nicht.

Mein Datum ist eine offene Texteingabe mit der Einschränkung Auswahl eines Datums mittels Kalender.

Könnte es sein, dass es mit der Platzierung der Datumsabfrage in den Fragebögen zu tun hat? Ich habe zwei Fragebögen, A1 für die double-opt-in-Erfassung der E-Mail, A2 nach der Bestätigung der E-Mail. Die Eingabe für die Datum-Variable SD23_01 findet im Teil A1 statt. Der PHP Code für die Serienmails ist in Fragebogen A2, nach der E-Mail Bestätigung. Wird die Variable SD23_01 vielleicht nicht weitergeben?
ago by SoSci Survey (358k points)
> Mein Datum ist eine offene Texteingabe mit der Einschränkung Auswahl eines Datums mittels Kalender.

Aha ... dann liefert Ihnen value('SD23_01') aber das Datum nicht in dem Format, in dem Sie es erwartem sondern einen Zeitstempel.

Versuchen Sie bitte dann so ...

$sendDateT2 = strtotime('08:00:00 +8 weeks', $Entbindungsdatum);

... hier wird der Zeitstempel vom Kalender als Refernzdatum gesetzt.

Unabhängig davon scheinen Sie Ihren Debug-Test nicht auf der Seite begonnen zu haben, wo Sie das Datum eingeben, denn ...

$Entbindungsdatum = (string)

... da ist kein Datum im Datensatz.
ago by s343721 (120 points)
Ist gelöst! Falls in Zukunft jemand ähnliche Probleme hat:

Der Verlauf unter folgendem Link https://support.soscisurvey.de/?qa=40748/weitere-problematik und die Platzierung der Datumsabfrage im zweiten Fragebogen, direkt vor dem PHP code, hat bei mir geholfen
ago by s343721 (120 points)
Jetzt sehe ich Ihre Antwort gerade. Ja genau, da war kein Datum im Datensatz. Mit der Platzierung der Datumsabfrage an anderer Stelle hat sich das nun gelöst...

Vielen Dank für die Hilfe :-)

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

...