Probleme beim Einfügen eines Datums in MySQL-Tabelle
am 21.01.2005 12:59:01 von frank.kuemmerle
Hallo,
ich habe in einem Formular 3 Felder mit denen ich ein Datum eingeben
möchte ( Tag, Monat, Jahr). Wenn ich das Formular abschicke, dann soll
in der aufgerufenen Datei ein das Datum in eine MySQL-Tabelle
eingefügt werden. Dazu muss ich das Datum in das englische Format
umwandeln.
Dies mache in folgendermaßen:
$Datum = "$_POST[Jahr]".'-'."$_POST[Monat]".'-'."$_POST[Tag]";
echo $Datum;
Mit dem anschließend "echo ..." wird das Datum auch ordnungsgemäß in
dem englischen Format angezeigt. Doch leider wird das Datum nicht in
die Tabelle übernommen. Das Speichern in die Tabelle mache ich mit
folgender Anweisung:
$SQLString = "INSERT INTO Einsatz(Datum_von)
VALUES(
$Datum
)";
Kann mir jemand bei diesem Problem weiterhelfen?
Danke schon im Voraus.
Gruss
Frank Kümmerle
Re: Probleme beim Einfügen eines Datums in MySQL-Tabelle
am 21.01.2005 13:31:16 von Niels Braczek
Frank K?mmerle schrieb:
> eingefügt werden. Dazu muss ich das Datum in das englische Format
> umwandeln. Dies mache in folgendermaßen:
> $Datum = "$_POST[Jahr]".'-'."$_POST[Monat]".'-'."$_POST[Tag]";
Das ist das ISO-Format.
> $SQLString = "INSERT INTO Einsatz(Datum_von)
> VALUES($Datum)";
Mache eine Fehlerbehandlung baim Absetzen der Query. MySQL sagt dir
Bescheid, was nicht stimmt.
MfG
Niels
--
Informatiker haben Humor, allerdings lässt sich der nur schwer
im Quelltext ausdrücken. Ausnahme Microsoft: Dort arbeiten die
Kabarettisten der Informatik, die sogar lustigen Quelltext schreiben
können. [Oliver Schad in dclpm]
Re: Probleme beim Einfügen eines Datums in MySQL-Tabelle
am 21.01.2005 13:32:27 von Thomas Hamacher
Frank K?mmerle schrieb:
> $Datum = "$_POST[Jahr]".'-'."$_POST[Monat]".'-'."$_POST[Tag]";
Das liest sich extrem schlecht. Ausserdem musst du die Werte validieren,
bevor du sie verwendest.
12.11. Prüfe importierte Parameter. Traue niemandem
http://www.php-faq.de/q/q-sicherheit-parameter.html
foreach(array('Jahr', 'Monat', 'Tag') as $param) {
if(!isset($_POST[$param])) {
echo "Erforderlicher Parameter '$param' fehlt.";
exit;
}
}
$jahr = $_POST['Jahr'];
$monat = $_POST['Monat'];
$tag = $_POST['Tag'];
if(!checkdate($monat, $tag, $jahr)) {
echo "Das eingegebene Datum ist ungültig.";
exit;
}
$datum = sprintf("%04d-%02d-%02d", $jahr, $monat, $tag);
> Mit dem anschließend "echo ..." wird das Datum auch ordnungsgemäß in
> dem englischen Format angezeigt.
Nur dann, wenn du einen 2-stelligen Tag und Monat, sowie ein 4-stelliges
Datum eintipperst, sonst kriegst du sowas 02-1-2, was kein gültiges
Datumsformat ist.
> $SQLString = "INSERT INTO Einsatz(Datum_von)
> VALUES(
> $Datum
> )";
Das Query ist kapott, RTFM! $datum muss in ' eingeschlossen werden, wie
ein normaler String.
INSERT INTO einsatz (datum_von) VALUES('$datum');