Im Homepage und Webhosting-Forum --- Formular: Datum & Zeit umwandeln
Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.
Hi Leute,
stehe jetzt vor folgendem Problem: Ich habe ein PHP-Formular, das mit dem Abschicken die Daten in eine MySQL-Datenbank schreibt. Das funktioniert auch alles wunderbar.
Allerdings gibt es ein Feld "Datum" und zwei Felder "Zeit". In der Datenbank im Format YYYY-MM-DD und HH:MM:SS gespeichert. Wie muß ich am Formular herummurksen, damit mir falsch eingegebene Daten und Zeiten (z. B. D.M.YY und HH.MM) richtig gespeichert werden?
lg, Herwig
Was genau brauchst du, nur das Formular oder auch was aus der Datenbank?
In der Praxis geht's - schätze ich - eher um folgende Eingabeformen:
T.M.JJ, T.MM.JJ, TT.MM.JJJJ => JJJJ.MM.TT
H.MM oder HH.MM => HH.MM.SS
öh, ich bin jetzt mit der Timestamp-Funktion nicht ganz so vertraut - nur: Wie löse ich damit das Grundproblem - nämlich dass ein X-beliebiges in der Zukunft liegendes Datum anders eigegeben wird als es in der Datenbank gespeichert wird?
Der function "mktime" ist es egal, was du eingibst... ob in der Zukunft oder in der Vergangenheit. Wenn Du checken willst, ob es in der Zukunft oder Vergangenheit liegt, hilft "time()" - die timestamp von JETZT.
1:
2:
if (time()>$timestamp) $vergangenheit=true;
else $zukunft=true;
auch wenn z.B. als Stunden = 40 gesetzt ist, das ist dem egal... es gibt keine falsche zeit bei TimeStamp... das ist IMMER die Anzahl der Sekunden zwischen der UNIX Epoche (January 1 1970) und der angegebenen Zeit! Damit lässt sich genialst rechnen... was ist denn genau Dein Problem?
Mein Problem ist folgendes: Ich habe ein Formular in PHP, in der man ein Datum und zwei Zeiten eingeben kann - ganz normal in Textfelder. Das wird dann in eine MySQL-Datenbank eingespeichert. Dort liegt die Zeit in der Form 12:34:00 vor. Wenn jetzt jemand aber "12.34" eingibt, wird ein falscher Wert in der Datenbank eingespeichert. Wie mache ich das am einfachsten, damit mir falsche Werte in richtige umgewandelt werden?
(Mir kommt während dem Schreiben eine Idee... Je ein Feld für Tag, Monat, Jahr und das dann zusammensetzen sollte doch funktionieren, oder?)
ok... ich hab jetzt an dem script herumgebastelt - aber ich hab' ein Problem mit dem Zusammenbasteln der einzelnen Variablen - Es wird einfach überall "0" angegeben, also die Variablen nicht in die Datenbank übertragen...
Hier der relevante Code:
1:
2:
3:
4:
5:
// Übernahme des Formulars in die Datenbank
$sql="INSERT INTO $tabellenname (date, time_start, time_end, channel, title, text, langtext, picture, gay, lesbian, travestie, hiv, tipp) values ('$date', '$time_start', '$time_end', '$channel', '$title', '$text', '$langtext', '$picture', '$gay', '$lesbian', '$travestie', '$hiv', '$tipp')";
// Erstellen der Variable $date ($time_start und $time_end funktionieren analog)
.. $date = $year."-".$month."-".$day; ?>
Dumme Anfängerfrage... Wo genau in meinem Beispiel gehört da das $_POST['time'] hin? In die SQL-Abfrage oder ins Erstellen der Variablen? Hab herumprobiert, herumgelesen - aber ich steh wieder mal total auf der Leitung... ;((
Drei verschiedene Datumsangaben müssen bei mir in der Datenbank gespeichert werden, die Felder haben das Format date.
Bei der Abfrage gibts auch kein Problem, damit der User das Datum dann in der "normalen" Form sieht, also z.B. 13.09.2006, hab ich das so gelöst:
1:
$sql = mysql_query ("SELECT ID,name,DATE_FORMAT(offer_end,'%d.%m.%Y'),DATE_FORMAT(res_begin,'%d.%m.%Y'),DATE_FORMAT(res_end,'%d.%m.%Y'),price,price_offer,member_max,member_act,description,organizer,insurance,archived FROM tour_reise WHERE ID=$ID");
Nur wie kriege ich jetzt nach einem Update das vom User eingegebene Datum wieder ins richtige Format in die Datenbank? Wenn man jetzt einfach so speichert ohne das Format umzuwandeln werden alle Datumsangaben auf 0 zurückgesetzt.
Vielen Dank schonmal, ich hoffe das ist ganz einfach zu lösen...
Nein, der User gibt ein Datum ein, z.B. das Startdatum einer Reise (also kein Timestamp möglich, da das Datum auch in der Vergangenheit und Zukunft liegen kann).
Der User gibt das Datum im Format 24.08.2006 ein.
So kann das datum aber nicht in der Datenbank gespeichert werden, da das entsprechende Feld in der Datenbank nicht vom Typ varchar ist sondern vom Typ date. Wie kann ich nun also das vom User eingegebene Datum in das Format date umwandeln bevor es in der Datenbank gespeichert wird?