Hallo,
Also, die Aufgaben (Prüfung und Auffüllen) einzeln anzugehen, ist schon richtig. Es spricht aber nichts dagegen, beide Aufgaben wiederum in einer Funktion zu kapseln. Du hast dann einerseits die Funktion check_time und desweiteren eine Funktion, nennen wir sie handleTimeInput, die alles, was zur Prüfung der Eingabe nötig ist, erledigt.
// Die Funktion gibt entweder die für gut befundene Eingabe zurück oder im Fehlerfall FALSE
//
function handleTimeInput($input) {
// globalisiere $errors, damit das Array hier drinnen
// genauso funktioniert, wie außerhalb der Funktion
global $errors;$parts = explode(':',$input);
$gueltig = check_time($parts[0], $parts[1]);
if ($gueltig === FALSE) {
$errors[] = "Benutzer wegen falscher Eingabe beschimpfen!";
return FALSE;
} else {
$parts[0] = str_pad($parts[0], 2, "0", STR_PAD_LEFT); // Stunden links mit 0 auffüllen
$parts[1] = str_pad($parts[1], 2, "0", STR_PAD_LEFT); // evtl. Minuten links mit 0 auffüllen
$input = $parts[0] .":". $parts[1];
return $input;
}
}$_POST['montagvon'] = handleTimeInput($_POST['montagvon']); // ist FALSE oder der geprüfte Inhalt.
Ich hab das ganze nun so versucht
~~~php
function check_time($hour, $minute)
{
if (in_array($hour, range(0, 23))
and in_array($minute, range(0, 59))) return TRUE; // Eingabe im gültigen Bereich
return FALSE; // Eingabe nicht im gültigen Bereich
}
function handleTimeInput($input) {
global $errors;
$parts = explode(':',$input);
$gueltig = check_time($parts[0], $parts[1]);
if ($gueltig === FALSE) {
return FALSE;
} else {
$parts[0] = str_pad($parts[0], 2, "0", STR_PAD_LEFT); // Stunden links mit 0 auffüllen
$parts[1] = str_pad($parts[1], 2, "0", STR_PAD_LEFT); // evtl. Minuten links mit 0 auffüllen
$input = $parts[0] .":". $parts[1];
return $input;
}
}
if( $_POST['montagvon'] = handleTimeInput($_POST['montagvon'] === FALSE)) {
$errors[] = "Geben Sie bitte eine Gültigen Wert in Montag von ein";
}
if( $_POST['montagbis'] = handleTimeInput($_POST['montagbis'] === FALSE)) {
$errors[] = "Geben Sie bitte eine Gültigen Wert in Montag bis ein";
}
aber leider bekomme ich immer die Fehlermeldung angezeigt dass etwas mit dem Datum nicht stimmt.