Datum aus Textfeld in mysql Datenbankfeld date schreiben
udo
- datenbank
Hallo,
ich habe hier schon einiges durchgesucht... auch gefunden. Nur funktioniert das nicht richtig.
Ich bin sicher der Fehler sitzt ca. 40cm vor dem Rechner, komme aber nicht drauf.
Ich möchte in einem Textfeld ein Datum im Format "01.01.2008" eingeben.
Dieses soll in einer Datenbank Tabelle (beachen) in der Spalte "date" eingetragen werden.
Nun möchte ich das bei Aufruf der Seite alle Datensätze die älter als "jetzt" sind gelöscht werden.
Ich gehe davon aus, dass ich die Spalte "date" in der Tabelle als Typ date hinterlege.
Darum wollte ich diese jetzt wandeln und danach die Löschabfrage auf diese Spalte beziehen.
Jetzt habe ich hier schon mehere Variationen gefunden bekomme aber kein Ergebnis oder besser nur falsche
Ich habe z.B. 07.05.2008 eingeben gespeichert wird aber 2007-05-20.
Hier mal der Code:
/* Übernahme aus einem Formular */
$datum = $_POST["datum"];
$datemysql = $_POST["datum"];
$uhrzeit = $_POST["uhrzeit"];
$uhrzeit = $_POST["uhrzeit"];
$teilnehmer = $_POST["teilnehmer"];
$gesendetdate = $_POST["gesendetdate"];
$gesendettime = $_POST["gesendettime"];
/* Test Datum anpassen */
/**
* date_german2mysql
* wandelt ein traditionelles deutsches Datum
* nach MySQL (ISO-Date).
*/
/* echo $datemysql; */
function date_german2mysql($datemysql) {
list($tag, $monat, $jahr) = explode(".", $datemysql);
return sprintf("%04d-%02d-%02d", $jahr, $monat, $tag);
}
echo $datemysql;
/* Eintrag in DB */
$eintrag = "INSERT INTO beachen (datum, uhrzeit, teilnehmer,gesendetdate,gesendettime,date)
VALUES ('$datum', '$uhrzeit','$teilnehmer','$gesendetdate','$gesendettime','$datemysql')";
$eintragen = mysql_query($eintrag);
Währe toll wenn mir jemand helfen könnte !
ich habs jetzt nicht genau gelesen, nur überflogen - aber es sieht nach php/mysql und einer selber gebastelten funktion
ersetze deine eigene funktion "date_german2mysql" durch mktime() und date() damit fängst du zwar keine eingabefehler ab, stellst aber eine richtige konvertierung des datums sicher
sprintf ist eine denkbar schlechte variante um einen string umzuschlichten ;)
Hallo
sprintf ist eine denkbar schlechte variante um einen string umzuschlichten ;)
ich bin ganz anderer Ansicht: sprintf ist hierfür hervorragend geeignet.
Ein geeignetes Eingabeformat wird bei der Funktion ja vorausgesetzt.
Freundliche Grüße
Vinzenz
Danke...
habe eine Lösung gefunden!
$split = explode(".", $datemysql);
$datum1 = $split[0];
$datum2 = $split[1];
$datum3 = $split[2];
$datemysql = $datum3.'-'.$datum2.'-'.$datum1;
mfg
Udo
echo $begrüßung;
habe eine Lösung gefunden!
$split = explode(".", $datemysql);
$datum1 = $split[0];
$datum2 = $split[1];
$datum3 = $split[2];
$datemysql = $datum3.'-'.$datum2.'-'.$datum1;
Diese "Lösung" funktioniert auch mit Eingaben wie "08.15.annodazumal" hervorragend. Und wenn nicht mindestens zwei Punkte in der Eingabe enthalten sind, gibt es anschließend Zugriffe auf nicht vorhandene Array-Elemente, denn dann hat $split weniger als drei Elemente. Du solltest dein Script mit allerlei unsinnigen Eingaben füttern, und es darufhin so umschreiben, dass es und deine Datenhaltung auch diese unbeschadet überstehen. Das error_reporting auf E_ALL zu stellen hilft dann die dabei enstehenden Folgefehler zu finden. Außerdem gibt es die Funktion checkdate(), mit der man ein Datum auf Gültigkeit prüfen kann.
echo "$verabschiedung $name";
n'abend,
$split = explode(".", $datemysql);
$datum1 = $split[0];
$datum2 = $split[1];
$datum3 = $split[2];
$datemysql = $datum3.'-'.$datum2.'-'.$datum1;
Bist du schon über die Funktionen checkdate() und strtotime() gestolpert?
weiterhin schönen abend...