Formularfeld Datum (falsche eingaben)

LoMo

Erfahrenes Mitglied
Hallo (ich mal wieder :)),

ich habe folgendes Problem. Und zwar habe ich ein Formular, das mehrere Eingaben
erwartet. Darunter ist auch eine Datumseingabe.

Problem:
Wenn der User das Datum in deutscher Form eingibt (z.B. 18.10.2005) speichert er es nicht in die Datenbank sprich er setzt den Standardwert dafür ein. Man muss ja das Datum (Feldtyp: date) folgend formatiert in die Tabelle speichern (z.B. 2005-10-18).

Ich wollte es so versuchen, dass ich die Datumseingabe mit strtotime() in einen timestamp umwandle und dann mit hilfe von date() entsprechend formatiere aber da is wiederrum das Problem das strtotime kein Datum mit diesen Format annimmt.

Mein missglückter Versuch :):
PHP:
		if (isset($_POST['Datum'])'')
		{
			$Datum_Am = date("Y-m-d", strtotime($_POST['Datum']));
		}

Ich bräuchte eine kleine Funktion, die dass eingegebene Datum überprüft (am besten format unabhängig) und in einen timestamp umwandelt. Falls der Benutzer eine Falscheingabe macht (z.B. einen String ins Textfeld schreibt) sollte eine Fehlermeldung kommen.
Kann mir da jemand helfen ?

mfg lomo
 
also ich denke es wird wohl am einfachsten sein, 3 Formularfelder(eins für den Tag, eins für den Monat, ewins für das Jahr) zur Verfügung zu stellen und dann mittels mktime() die gegebenen Werte in einen Timestamp umzuwandeln.
 
Zum Einen brauchst du eine Funktion die verifiziert, dass das Datum in einem korrekten Format angegeben wurde, das löst du am Besten mit Regulären Ausdrücken.
Dann brauchst du eine Funktion, die den vom User eingegebenen String (Datum) zerlegt und zu einem Timestamp macht.

Ich würde dir für den zweiten Teil soetwas in der Art empfehlen (ungetestet):
PHP:
function mkTimestamp($datum)
{
    $arr = explode('.',$datum);
    return mktime(0,0,0,$arr['1'],$arr['0'],$arr['2']);
}
 
Vielen Dank für die Hilfe

PHP:
	function Timestampen($Datum)
	{
		$Timestamp = strtotime($Datum);
		
		if($Timestamp<0){
			$arr = explode($Datum); 
			$Timestamp = mktime(0,0,0,$arr['1'],$arr['0'],$arr['2']); 
		}
		else {
			$Timestamp = $Timestamp;
		}
		
		$Datum = date("Y-m-d",$Timestamp);
		return $Datum;
	}

Ich habs vorübergehend mal so gelöst :D.

mfg lomo
 
Zuletzt bearbeitet:
Zurück