Date Problem beim MySQL Update

FlorianR

Erfahrenes Mitglied
Hallo Zusammen,

ich habe ein Formular das u.A. ein formatiertes Datum (direkt im mysql select formatiert) in einem Textfeld ausgibt. Nun möchte ich das Datum ändern können und per "update" an die Datenbank zurück schicken. Das Problem ist, dass das Format natürlich nicht mehr dem Ursprung (0000.00.00) entspring (zur Zeit: 00.00.0000). Wenn ich nun versuche das ganze wieder zu formatieren, sagt er mir, dass es sich dabei um einen String handelt und ehrlich gesagt weiss ich nicht mehr weiter.

Hier mein Code:

PHP:
$geburtsjahr = date($_POST["geburtsjahr"],"%Y.%m.%d");

Das gleiche habe ich auch im MySQL Update via date_format ausprobiert.

Ich hoffe ihr könnt mir weiterhelfen.

Gruß,
Florian
 
Die Funktion date() erwartet als zweiten Parameter einen Timestamp (int) und keinen string.
D.h. du musst $_POST["geburtsjahr"] zuerst in einen Zeitstempel umwandeln.
Entweder mit strtotime() oder mktime().
 
Zuletzt bearbeitet:
strtotime erwartet die englische Reihenfolge - die ja nicht vorhanden ist (sonst hätte ich kein Problem beim Update). Wie verhält es sich mit mktime? Wie sieht der zweite Parameter aus?

$geburtsjahr = date(mktime($_POST["geburtsjahr"],"?"),"%Y.%m.%d");
 
Folgendes ist möglich:
PHP:
$geburtsjahr = date( 'Y-m-d', strtotime( $_POST['geburtsjahr'] ) );
Allerdings würde ich eigendlich jedes Datum direkt als Zeitstempel speichern.

//edit: mktime() erwartet 6 Parameter:
int mktime ([ int $Stunde [, int $Minute [, int $Sekunde [, int $Monat [, int $Tag [, int $Jahr [, int $is_dst ]]]]]]] )
Hier müsstest du Tag, Monat und Jahr zuerst aus $_POST['geburtsjahr'] holen, beispielsweise mit explode(). Deswegen finde ich hier strtotime() einfach handlicher.
 
Zuletzt bearbeitet:
Nun, du musst nicht erst das Datum aus der Datenbank auslesen und dieses dann in einen Zeitstempel umzuwandeln um damit zum Beispiel irgendwas zu berechnen.
Dadurch sparst du natürlich auch etwas an Code.
 
Zurück