NurrE Geschrieben 28. Dezember 2003 Teilen Geschrieben 28. Dezember 2003 Guden... Ja, ich hab die Forumsuche benutzt aber nicht so recht das gefunden was ich eigentlich gesucht hab. Bin also auf eure Hilfe angewiesen. Es geht um die Formatierung des Datums in PHP: Ich hab eine Fotogalerie in PHP geschrieben, die zuerst alle Events auflistet, also n kurzer Text und ein Bilder da Galerie. Wenn man darauf klickt kommen dann alle Fotos des jeweiligen Events. Erstellt werden die Events und Galerien automatisch, also durch ein Formular in denen ich die Eventdaten und die Ordner der Bilder eingebe. Jetzt mein eigentliches Problem: Wenn ich den Event in mein Formular eintrage kann ich auch das Datum eingeben, wann der Event war. Wenn ich nun die Events auflisten lasse (nach Datum sortiert) kommen die Events in falscher Reihenfolge. In meiner MySQL-DB (wo die Events liegen) ist das Format INT (für das Datum), daher wird dann z.b. der 23.12.2003 nach dem 10.05.2003 aufgelistet, weil eben die 1 von 10 kleiner ist als die 2 von 23 Wie kann ich also mein Datum so aus dem Formular auslesen/formatieren, dass daraus ein für die DB gültiges Datumsformat wird und ich die Events so sortieren kann, dass immer der Event mit dem neuesten Datum oben ist? Dazu muss man auch berücksichtigen dass ich evtl. ältere Events später nachträglich einfügen will, d.h. im Jahr 2004 einen Event der Anfang 2003 war... z.b. ?!? Vielen Dank schon mal P.S.: Bisher hab ich die Events nach "ID" in der DB sortiert, also der am neuesten eingetragene ganz oben, ist aber nicht ganz so im Sinne des Erfinders, als meines Sinnes Wer sich mal ein Bild davon machen will: klick Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 28. Dezember 2003 Teilen Geschrieben 28. Dezember 2003 Hallo, nimm als MySQL Datumstype timestamp. Da haste zwar die Uhrzeit mit drin, aber da danach läst sich super sortieren. Und bei der Ausgabe kannste ja die Uhrzeit abschneiden. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 29. Dezember 2003 Teilen Geschrieben 29. Dezember 2003 ich persöhnlich finde es schöner mit einem UNIX-Timestamp zu arbeiten, da dieser auch in jede php funktion verwendet werden kann z.b. date(); mysql timestamp muss man immer erst mit substr zerschneiden,.... einfach nen int(12) feld in die db und da ein UNIX-Timestamp rein näheres siehe mktime(); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 29. Dezember 2003 Teilen Geschrieben 29. Dezember 2003 Wenn du allerdings Daten aus der Vergangenheit berücksichtigen musst gibts mit dem Timestamp allerdings auch Grenzen. Bei Windows ist vo rdem 1.1.1970 und mit Unix/LInux ist vor 1.1.1900 Schluss. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
computercrustie Geschrieben 9. Januar 2004 Teilen Geschrieben 9. Januar 2004 Ja, aber er arbeitet ja mit aktuellen Fotos. Also wie bereits gesagt wurde: Datenfeld vom Typ INT in deiner DB und dieses als UNIX-Time benutzen. Damit kannst du auch einfacher Zeiten berechnen. Deine Datumsangabe kannst du ja mittel RegEx parsen und dann mit mktime() in Sekunden umwandeln: if (preg_match("/((\d){1,2}\.(\d){1,2}\.(\d){2,4}/",$eingabe,$match)) { $time=mktime(0,0,0,$match[2],$match[1],$match[3]); } [/PHP] Du brauchst dann in der ORDER-Klausel der SQL-Abfrage nur noch DESC angeben und schon hast du den wirklich aktuellen Eintrag zuerst. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schledo Geschrieben 9. Januar 2004 Teilen Geschrieben 9. Januar 2004 Datenfeld vom Typ INT in deiner DB und dieses als UNIX-Time benutzen. Damit kannst du auch einfacher Zeiten berechnen. Datenfeld als Typ INT? Wie eigentlich nicht gleich vom TYP TIMESTAMP? Andererseits gibt es auch noch den Datenfeldtyp DATE, welcher ein Datum im Format YYYY-MM-DD ablegt und auch sortieren kann. So bleiben zumindest manuelle Eingriffe in die DB einfach. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
T´Pau Geschrieben 10. Januar 2004 Teilen Geschrieben 10. Januar 2004 Ich würde auch einfach DATE verwenden, danach kann man super sortieren und es ist einfach umzuwandeln. Beim INSERT einfach mit CURENT_DATE einfügen und beim select mit DATE_FORMAT(datum, "d.m.Y") direkt in einer vernünftigen Formatierumg ausgeben lassen. http://www.mysql.com/doc/de/Date_and_time_functions.html Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
computercrustie Geschrieben 11. Januar 2004 Teilen Geschrieben 11. Januar 2004 So gehts natürlich auch. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
FinalFantasy Geschrieben 12. Januar 2004 Teilen Geschrieben 12. Januar 2004 Wenn es in der Datenbank als INT gespeichert ist, ist dass in dem Sinn ja kein Datum, sondern die Anzahl der Sekunden, die seit dem 1.1.1970 verstrichen sind. Demnach ist der 23.12.03 schon später als der 02.07.03. Ich persönlich arbeite auch lieber mit INT als mit TIMESTAMP, weil man damit nur schwer rechnen kann. Wenn du dir die Daten aus MySQL holst, probiers doch mal mit "ORDER BY date" ind dem Select, vielleicht liegt es ja einfach nur daran, dass deine Events nicht in der chronologischen Reihenfolge in der DB stehen... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
2-frozen Geschrieben 25. Juli 2004 Teilen Geschrieben 25. Juli 2004 Ich habe in meiner DB ein datum als Typ date liegen, also nach yyyy-mm-dd aber irgendwie bekomm eich die Ausgabe nicht formatiert $a_row[datum] = date ($a_row[datum],'m-y'); print "$a_row[datum]"; [/PHP] Ich bekomme zwar das Datum zu sehen, aber ich will nur Monat und Jahr ausgegeben haben (geht um die Anzeige der Erstzulassung) 2-helpless Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 25. Juli 2004 Teilen Geschrieben 25. Juli 2004 $ergebnis = date(strtotime($a_row["datum"])); strtotime() date() Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 25. Juli 2004 Teilen Geschrieben 25. Juli 2004 Zum einen gibst Du die falschen Parameter für die Funktion date an. http://www.selfphp.info/funktionsreferenz/datums_und_zeit_funktionen/date.php Zum anderen brauchst Du ein Timestamp um daraus ein Datum zu formatieren. Das könntest Du auch per MySQL machen. select date_format(datum, '%m-%y') as datum from .... Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Unique4gl Geschrieben 25. Juli 2004 Teilen Geschrieben 25. Juli 2004 Hallo, also ich arbeite mit folgendem Prinzip bei einem Datum: In der Datenbank speichere ich das Datum im int Typ und im Format YYYYMMDD. Also zuerst das Jahr, dann Monat und dann Tag. Das ganze lässt sich prima sortieren. Wenn ich das aktuelle Datum speichern möchte nehme ich date(Ymd) und wenn ich das Datum korrekt formatiert ausgeben möchte, hab ich dafür eine kleine Funktion (z.B. aus 20040725 wird dann 25.07.2004). Gruß Daniel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 25. Juli 2004 Teilen Geschrieben 25. Juli 2004 Hallo, also ich arbeite mit folgendem Prinzip bei einem Datum: In der Datenbank speichere ich das Datum im int Typ und im Format YYYYMMDD. Also zuerst das Jahr, dann Monat und dann Tag. Das ganze lässt sich prima sortieren. Wenn ich das aktuelle Datum speichern möchte nehme ich date(Ymd) und wenn ich das Datum korrekt formatiert ausgeben möchte, hab ich dafür eine kleine Funktion (z.B. aus 20040725 wird dann 25.07.2004). Gruß Daniel das ist nichts anderes als die standard vorgehensweise von MYSQL-Timestamps Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 25. Juli 2004 Teilen Geschrieben 25. Juli 2004 Hi, TIMESTAMP ist dazu da Veränderungen an Datensätzen zu registrieren. DATETIME bzw. DATE sollte man für Datumswerte nehmen mit denen man arbeiten will, es gibt so viele schöne Datenbankfunktionen für Datumswerte. Einen eigenen timestamp in einem INT zu speichern, klappt zwar, kann aber zu Problemen führen. Und bitte auf keinen Fall sowas machen. http://forum.fachinformatiker.de/showpost.php?p=587701&postcount=253 Gruß Jaraz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 26. Juli 2004 Teilen Geschrieben 26. Juli 2004 Hi, TIMESTAMP ist dazu da Veränderungen an Datensätzen zu registrieren. DATETIME bzw. DATE sollte man für Datumswerte nehmen mit denen man arbeiten will, es gibt so viele schöne Datenbankfunktionen für Datumswerte. richtig, so gehe ich das ganze auch immer an Und bitte auf keinen Fall sowas machen. http://forum.fachinformatiker.de/showpost.php?p=587701&postcount=253 Gruß Jaraz hm ich sag ma: "Pech gehabt" ;P Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.