Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

einträge nach eingetragen datum(s) (NICHT timestamp) ordnen

HI all!
folgendes problem:
ich möchte einen veranstaltungskalender auslesen und die events chronologisch ordnen.
blöderweise scheint in php jede formatierung des datums (punkte, quer- oder bindestriche, abstände, etc.)
sofort ein erfassen der gesamtzahl zu unterbinden.

was kann man da machen?
gibt es eine möglichkeit ein datum für die datenbank zu deformatieren (6-stellige zahlereihe per default) und dann beim auslesen wieder in ein dreistelliges format aufzusplitten?

oder gibt es eine anweisung für php, zeichenketten über symbole hinweg als gesamt-werk zu lesen und entsprechend zu sortieren...???

hoffend auf antwort verbleibe ich vorerst mit knoten im hirn eure elke

Hier gehts zum Orginal Eintrag "einträge nach eingetragen datum(s) (NICHT timestamp) ordnen" im Forum

Antworten

ich habe nicht verstanden, in welchem format das datum in der tabelle vorliegt. beispiel bitte!


2.

Zitat:
blöderweise scheint in php jede formatierung des datums (punkte, quer- oder bindestriche, abstände, etc.)
Du sprichst in Rätseln.... Solltest du Probleme beim Erfassen des Datums haben, empfehle ich das ganze über Dropdowns für Tag, Monat und Jahr zu lösen....
Zitat:
gibt es eine möglichkeit ein datum für die datenbank zu deformatieren (6-stellige zahlereihe per default)
Du könntest einfach ein Date-Feld nehmen....
Zitat:
und dann beim auslesen wieder in ein dreistelliges format aufzusplitten?
Was ist denn ein dreistelliges Datumsformat???
Zitat:
oder gibt es eine anweisung für php, zeichenketten über symbole hinweg als gesamt-werk zu lesen und entsprechend zu sortieren...???
Wenn du ein Date-Feld hast, kannst du einfach "... ORDER BY datum" in der Abfrage schreiben....


3.

äh, ok ich hab mich offensichtlich wirklich sehr unklar ausgedrückt.
also, das datumsformat wäre tag.monat.jahr (16.01.06). bei dieser formatierung ordnet PHP mit der ORDER BY anweisung nur die ersten zwei stellen....


4.

Die Sortierung nimmt nicht PHP, sondern MySQL vor (nur am Rande). Verwende für die Spalte das Format DATE oder schreib das Datum andersherum und in einem anderen Format (JJJJMMTT, also 20060116 für 16.01.2006), dann sortiert MySQL die Daten wie Zahlen.... Besser ist natürlich das Feld Date....

Hier noch zwei Links:
http://dev.mysql.com/doc/refman/4.0/de/datetime.html
http://dev.mysql.com/doc/refman/4.0/de/date-and-time-functions.html


5.

formatierte datumsformate sind besch... um nach ihnen zu sortieren. normalerweise verwendet man dazu felder vom typ unix_timestamp (nur bei daten nach dem 1.1.1970), date(YYYY-MM-DD) / datetime (YYYY-MM-DD HH:II:SS) oder timestamp (YYYYMMDDHHIISS und kürzere varianten ohne zeit oder 2-stelligem jahr). das deutsche datumsformat lässt sich so nicht sortieren, weil die reihenfolge der zeiteinheiten dem widerspricht (überleg dir mal, warum YYYY-MM-DD sich gut sortieren lässt, DD.MM.YYYY aber nicht - es liegt nicht an der punkten oder strichen).

die eingabe kannst du, wie bereits erwähnt, über verschiedene dropdowns lösen (eingabe muss aber trotzdem noch geprüft werden, denn du möchtest ja sicherlich keinen 31.02.2006 eintragen lassen...), oder auch diese hübschen, kleinen dhtml kalender verwenden (mein favorit) oder aber ganz simpel ein beispielhaft formatiertes datum vorgeben (testen nicht vergessen).


6.

Zitat:
eingabe muss aber trotzdem noch geprüft werden, denn du möchtest ja sicherlich keinen 31.02.2006 eintragen lassen...
Warum nicht? Wenn unsere Bundesregierung schon versuchte den 3. Oktober auf einen Sonntag zu legen, kann doch eine Österreicherin mal den 31.02. einführen :D :D :D Aber bitte als Wochenende... Nicht böse sein, ich hab nichts gegen Österreicher.... :) *liebguck*


7.

und als ausgleich schaffen wir dann den ersten mai ab ;-)


8.

Zitat:
Gary postete
Zitat:
eingabe muss aber trotzdem noch geprüft werden, denn du möchtest ja sicherlich keinen 31.02.2006 eintragen lassen...
Warum nicht? Wenn unsere Bundesregierung schon versuchte den 3. Oktober auf einen Sonntag zu legen, kann doch eine Österreicherin mal den 31.02. einführen :D :D :D Aber bitte als Wochenende... Nicht böse sein, ich hab nichts gegen Österreicher.... :) *liebguck*
oh , ich liebe österreicherwitze! sie geben uns das gefühl etwas besonderes zu sein - und auch fehler machen zu dürfen ist ein privilleg, oder ;->


9.

Zitat:
alexander postete
formatierte datumsformate sind besch... um nach ihnen zu sortieren. normalerweise verwendet man dazu felder vom typ unix_timestamp (nur bei daten nach dem 1.1.1970), date(YYYY-MM-DD) / datetime (YYYY-MM-DD HH:II:SS) oder timestamp (YYYYMMDDHHIISS und kürzere varianten ohne zeit oder 2-stelligem jahr). das deutsche datumsformat lässt sich so nicht sortieren, weil die reihenfolge der zeiteinheiten dem widerspricht (überleg dir mal, warum YYYY-MM-DD sich gut sortieren lässt, DD.MM.YYYY aber nicht - es liegt nicht an der punkten oder strichen).

die eingabe kannst du, wie bereits erwähnt, über verschiedene dropdowns lösen (eingabe muss aber trotzdem noch geprüft werden, denn du möchtest ja sicherlich keinen 31.02.2006 eintragen lassen...), oder auch diese hübschen, kleinen dhtml kalender verwenden (mein favorit) oder aber ganz simpel ein beispielhaft formatiertes datum vorgeben (testen nicht vergessen).
yo!

stimmt. das mit der datumsformatierung beginnend mit dem jahr macht systematisch sinn und ist für systeminterne archive und ausgaben bestimmt mehr als ausreichen - für einen online veranstaltungskalender wäre mir aber ein "deutsches" datumsformat dennoch lieber...
dropdowns sind wohl keine lösung, weil jeder tag in den nächsten 50 jahren möglich sein muß....
"diese hübschen kleinen dhtml-kalender..." wo gibt's die, wie sehen die aus?
lg, elke


10.

Zitat:
dropdowns sind wohl keine lösung, weil jeder tag in den nächsten 50 jahren möglich sein muß....

Dann solltest du die Dropdowns dynamisch per for-Schleife erstellen, dann hast du auch in hundert Jahren keine Probleme....

Zitat:
für einen online veranstaltungskalender wäre mir aber ein "deutsches" datumsformat dennoch lieber...
Es geht hier nicht um die Formatierung des Datums bei der Ausgabe, sondern um die Speicherung und da ist es eigentlich (!!!) egal, ob du es mit 2006-01-16 oder 16.01.2006 speicherst. Die Ausgabe kann dann wieder ganz anders aussehen. Dafür hatte ich dir ja die zwei Links aus der MySQL-Doku gepostet.... Schau dir die mal in Ruhe an....


11.

mysql bietet dir an die daten formatiert auszugeben. das speichern von formatierten daten ist meiner meinung nac der am häufigsten gemachte fehler - du solltest immer das für die verarbeitungsschritte passendste format wählen. selbst wenn dir dein db-system keine formatierungsfunktionen bieten sollte, wäre es immer noch einfacher diese im skript vorzunehmen als ein format zu wählen, das du nicht verarbeiten kannst. was würdest du denn machen, wenn du ein "deutsches" datum gespeichert hast, aber besuchern aus dem angelsächsischen raum die daten präsentieren müsstest...?

langer rede, kuzer sinn: verwendet den feldtyp date oder timestamp(8) wenn du kein zeitangabe benötigst, oder datetime oder timestamp(14) wenn du auch die zeit speichern möchtest.

Zitat:
dropdowns sind wohl keine lösung, weil jeder tag in den nächsten 50 jahren möglich sein muß....

wieso sind dropdowns keine lösung? du sollst doch kein dropdown anlegen, in welchem alle tage aufgeführt sind, sondern eins für den tag, eines für den monat und eins fürs jahr. damit könnten dann auch daten der wie 31.02.2006 eingegeben werden. genau aus diesem grund schrieb ich, dass du das datum auf seine gültigkeit prüfen musst.

Zitat:
"diese hübschen kleinen dhtml-kalender..." wo gibt's die, wie sehen die aus?
im netz. z.b. hier http://www.dynarch.com/projects/calendar/ (vorsicht bei den sprachfiles, die haben teilweise kodierungsfehler ("komische zeichen"). einfach ersetzen und dann klappts).


Hier gehts zum Orginal Eintrag "einträge nach eingetragen datum(s) (NICHT timestamp) ordnen" im Forum
 
phpforum.de | Impressum | Handy Bundles