Datum abspeichern

Moin allerseits…

In einem Eingabefeld soll ein Benutzer ein Datum in Form „05.11.09“ eingeben können, welches ich dann als Timestamp in einer db ablegen möchte.

Anschliessend soll das Datum in einer Übersicht aus der DB geholt und dargestellt werden, wieder im Format „05.11.09“

Ich speicher das Datum in der DB über

...
$datum = strtotime($\_POST['datum']);
...

und lese es mit

...
date("d.m.Y", $row['datum'])
...

wieder aus… Es stimmt aber nicht überein.

Wo hab ich da denn den Fehler??? Wär schön wenn mir jemand helfen könnte…

lg micha

Was für ein Datentyp hat das Feld in der DB?
Timestamp oder Varchar oder DateTime oder?

Mehr Infos.
Danke.

lg

Hallo Sebastian

Das Feld ist vom Typ date, ich habs auch mit int(10) probiert, klappt aber beides nicht.
Ich geb den 05.11.09 ein und bekomm den 09.11.09 raus…

lg micha

Das Feld ist vom Typ date, ich habs auch mit int(10) probiert,
klappt aber beides nicht.
Ich geb den 05.11.09 ein und bekomm den 09.11.09 raus…

Hallo.

Also ich hab in Erinnerung, dass die Date-Funktion einen System-Timestamp umformatiert. Ein MySQL-Date ist aber etwas ganz anderes.

Mach mal zum Test ein

echo $row['datum'];

Da sollte (meiner Erinnerung nach) schon ein formatiertes Datum ausgegeben werden. Dies kannst du aber nicht einfach so mit Date umwandeln (auch hier wieder: soweit ich mich erinnere)

Wenn ich mich also richtig erinnere (und jetzt ist gut mit diesen Erinnerungsanmerkungen…), dann ziehst du entweder mit Substr (o.ä.) aus dem MySQL-Datum Tag, Monat und Jahr heraus und kombinierst sie selbst, oder du ziehst ebenso Tag, Monat und Jahr heraus und benutzt die mktime-Funktion, um daraus wieder einen Timestamp zu machen, den die Date-Funktion erfolgreich in dein Format bringen kann.

Beispiel:
date(„d.m.Y“, mktime(0, 0, 0, $monat, $tag, $jahr))

Gruß
A

Hallöle Anja,…

Danke für den Tipp, aber wenn mich meine Erinnerung nicht trübt, hab ich damit alles andere als ein vernünftiges Ergebnis bekommen :wink:

Aaaaaber…

Hier mal ein workaround der es tut:

Feld in der DB: Type Date

Eingabe im Formularfeld im Format: 05.11.2009

Um in der DB zu speichern:

function date2sql($datum) 
{
 list($tag, $monat, $jahr) = explode(".", $datum);
 return sprintf("%04d-%02d-%02d", $jahr, $monat, $tag);
}
$datum = date2sql($\_POST['datum']);

Auslesen aus der DB:

function date\_2german($datum) 
{
 list($jahr, $monat, $tag) = explode("-", $datum);
 return sprintf("%02d.%02d.%04d", $tag, $monat, $jahr);
}
echo date\_mysql2german($row['datum']);

Zumindest klappts bei mir so…

lg micha

Wenn du ein DB Feld vom Typ Timestamp anlegst, schreibt (zumindest) mysql das aktuelle datum automatisch rein, wenn ein eintrag angelegt wird. Zum Auslesen gibts sicherlich ne menge Codebeispiele im netz.