Datumsfeld in MySQL Datenbank speichern
Raffi
- php
0 Thomas Luethi0 Raffi
0 Curby
Hallo Leute
Ich habe ein Formular mit einem Textfeld. Dort soll das Datum im Format: 01.01.04 oder 01.01.2004 oder 1.1.04 eingegeben werden können. Danach wird es in der MySQL Datenbank gespeichert, wo die Splate als date formatiert ist.
Nun solange ich das Datum 2004.01.01 eingebe ist es kein Problem. Wie kann ich die eingabe so umformatieren, damit das Datum korrekt in der DB gespeichert wird?
Bei der Ausgabe habe ich es folgendermassen gelöst, nur bei der Eingabe geht das irgendwie nicht:
$datum = strtotime($datum);
$datum = date("d.m.Y",$datum);
$zeit = strtotime($zeit);
$zeit = date("H:i",$zeit);
Danke und Gruss
Raffi
Hallo,
Lies die Manuals zu den Datumsfunktionen u.s.w. nochmals genau.
Wahrscheinlich hast Du Probleme mit den verschiedenen Reihenfolgen.
"01.04.2003" ist nicht eindeutig.
Fuer "uns" (Schweizer, Deutsche und einige andere Europaer) ist das
der erste April, fuer US-Amerikaner und viele Programmiersprachen
ist das aber der vierte Januar...
Um ein Datum vom "Deutschen" Format "DD.MM.YYYY"
ins MySQL-Format "YYYY-MM-DD" umzuwandeln, nimmst
Du am besten ein paar geeignete String-Funktionen.
PHP-Manual: String-Funktionen:
http://www.php.net/manual/de/ref.strings.php
PHP-Manual: Datums- und Zeit-Funktionen:
http://www.php.net/manual/de/ref.datetime.php
Gruesse,
Thomas
Das ist mir schon klar, das wir Eurupäer das so verwenden.
Aber warum kann ich das nicht wie bei der Ausgabe so umformen?
Gruss
raffi
Hallo,
Das ist mir schon klar, das wir Eurupäer das so verwenden.
Aber warum kann ich das nicht wie bei der Ausgabe so umformen?
Weil Du das f* Manual zu strtotime() nicht richtig gelesen hast
und versuchst, dieser Funktion ein "deutsches" Datum zu fuettern.
http://www.php.net/manual/de/function.strtotime.php
int strtotime ( string time [, int now])
"Diese Funktion erwartet einen String mit einem Datum im
englischen Format und versucht diesen in einen Unix-Timestamp
umzuwandeln.
[...]
Die Funktion strtotime() verhält sich gemäß der
Syntax von GNU Date. Daher sollten Sie einen Blick in die
GNU Manual Seite Date Input Formats
http://www.gnu.org/software/tar/manual/html_chapter/tar_7.html
werfen. Dort wird die gültige Syntax für time beschrieben."
Wer lesen kann, ist im Vorteil...
Gruesse,
Thomas
Hier ein Beispiel:
einfach die funktion irgendwo in das script haun am besten am anfang und dann die funktion auf die variable anwenden. z.B. $datum = $chdate($datum);
//Funktionsbeispiel zum ändern in das Mysql DATE format
function chdate($text1)
{
$match1 = "/[1]+.[0-9]+.[0-9]+/i";
$match2 = "/[2]+-[0-9]+-[0-9]+/i";
if(preg_match($match1, $text1))
{
$text2 = explode(".", $text1);
return $text2[2] ."-". $text2[1] ."-". $text2[0];
}
elseif(preg_match($match2, $text1))
{
$text2 = explode("-", $text1);
return $text2[2] .".". $text2[1] .".". $text2[0];
}
}