Ich habe nun eine mögliche Fehlerquelle entdeckt: Die Probanden geben in drei verschiedenen Textfeldern an, an welchem Tag('O120_01'), in welchem Monat ('O120_02') und zu welcher Stunde ('O120_03') ihre Beratung stattfindet. Diesen Angaben entsprechend, wird dann der Zeitpunkt zum Versand des Abschlussfragebogens wie oben beschrieben angepasst. Der Code zur Definition der Variable $beratungsstunde, die den Zeitpunkt enthält, sieht wie folgt aus:
$datum = array (value ('O120_01'), value ('O120_02'), 2018);
$uhrzeit = value('O120_03');
$beratungsstunde = array (implode ('.', $datum), $uhrzeit);
$beratungsstunde = implode ('', $beratungsstunde);
$beratungsstunde = strtotime ($beratungsstunde);
//Mail zum nächsten Fragebogen wird sofort geschickt
mailSchedule(false, 18, 1);
//Erinnerung wird halbe Stunde vor geplantem Termin geschickt
mailSchedule(false, 19, $beratungsstunde-1800);
mailRevoke (false, 36); //Versand Abschlussfragebogen canceln
mailRevoke (false, 37); //Erinnerungsmail Abschlussfragebogen canceln
mailSchedule (false, 36, $beratungsstunde+604800); //Versand Abschlussfragebogen 7 Tage nach nächster Stunde festsetzen
mailSchedule (false, 37, $beratungsstunde+864000); //Versand Erinnerung Abschlussfragebogen 10 Tage nach nächster Stunde festsetzen
Wenn nun eine Person ein nicht existierendes Datum (z.B. den 32. September, also O120_01 == 32 und O120_02 == 09) eingibt, wird die Einladung zum Abschlussfragebogen zwar gelöscht, aber keine neue mehr festgelegt, scheinbar aufgrund des falschen Datums.
Können Sie mir sagen, wie ich die Eingabe nur auf realistische Werte beschränken kann?
Ich habe etwas von Perl-Regeln gelesen, habe aber keinen Schimmer wie diese funktionieren. Ich würde das Item "Tag"/O120_01 gerne auf 01-31 beschränken, das Item "Monat"/O120_02 auf 01-12 und das Item "Uhrzeit"/O120_03 auf 0800-2100.
Am besten wäre "Tag" in Monaten mit nur 30 Tagen auch nur auf 01-30 beschränkt. Ist das möglich?