Seite 1 von 2

Datenbankeinträge beim auslesen sortieren

Verfasst: 30.08.2004 19:24
von exweised
Hallo,

ich habe in einer Datenbanktabelle Inhalt stehen, den ich ausgeben möchte. Das ansich ist ja nicht das Problem. Ich möchte vor der Ausgabe die Tabelle sortieren, und zwar nach Datum. Dieses steht in Form von TT.MM.JJJJ bei jedem Eintrag.

Jetzt habe ich mit der Funktion sort() schon ein wenig rumprobiert. Leider funktioniert das nicht. Eine Fehlermeldung kommt nicht. Es wird mir trotzdem unsortiert ausgegeben.

Könnt ihr mir vielleicht einen Tipp geben, worauf ich achten muss?

Verfasst: 30.08.2004 19:52
von xabbuh
MySQL in Verbindung mit php?

Dann nimm als Feldtyp in der Datenbank DATE. Die Einträge sollten dann im Format JJJJ-MM-TT abgespeichert werden. Anschließend kannst du dann die Abfrage so machen:

Code: Alles auswählen

$sql = "SELECT
                DATE_FORMAT(datum, '%d.%m.%Y') AS datum_formatiert
            FROM
                table
            ORDER BY
                datum";

Verfasst: 30.08.2004 22:44
von StarShop
Hallo,

je nachdem wie herum du die Daten sortiert haben möchtest, kannst du noch die Schlüsselwörter ASC (aufsteigend = Standard) bzw DESC (absteigend) anhängen, also ORDER BY datum DESC.

Verfasst: 31.08.2004 11:31
von xabbuh
StarShop hat geschrieben:Hallo,

je nachdem wie herum du die Daten sortiert haben möchtest, kannst du noch die Schlüsselwörter ASC (aufsteigend = Standard) bzw DESC (absteigend) anhängen, also ORDER BY datum DESC.
ASC kann weggelassen werden, da dies Standard ist, wenn nichts angegeben wird. Zwingen notwendig ist meines Wissens nach nur DESC wenn du absteigend sortieren lassen willst.

Wenn das Datumsformat jedoch TT.MM.JJJJ ist, wird man bei der Sortierung scheinbar "merkwürdige" Ergebnisse erhalten.

Verfasst: 31.08.2004 13:48
von exweised
Vielen Dank, funktioniert. :wink:

Verfasst: 04.09.2004 12:12
von exweised
Kann man auch 2 Spalten beim sortieren beachten lassen? :-?

Jetzt soll nämlich noch die Uhrzeit hinzu kommen. Habe einfach folgendes probiert:

Code: Alles auswählen

$select = @mysql_query("SELECT DATE_FORMAT(datum, '%d.%m.%Y') AS datum_formatiert, zeit, inhalt FROM tabelle ORDER BY datum, zeit DESC", $verbindung);
Aber leider funktioniert das nicht. :cry: Ist das nicht möglich? :-?

Verfasst: 04.09.2004 12:18
von PhilippK
Sollte eigentlich so funktionieren...
Wir ist die Zeit bei dir abgespeichert?

Gruß, Philipp

Verfasst: 04.09.2004 12:19
von xabbuh
Doch... genauso wird das gemacht.
In deinem Beispiel würde das konkret bedeuten:
- sortiere zunächst aufsteigend nach Datum
- wenn es Einträge mit gleichem Datum gibt, sortiere diese absteigend nach der Uhrzeit

Ist das so gewünscht?

Wenn nein, sag mal was du machen willst.
Wenn ja, schreib mal, was nicht richtig ist, ob es Fehlermeldungen gibt etc.

Verfasst: 04.09.2004 12:47
von exweised
Hmm, also Einträge sind solche:
2004-09-04 | 12:05:32 | lala
2004-09-04 | 12:45:42 | lele
2004-09-03 | 23:17:09 | lulu
2004-09-03 | 23:48:11 | lili
2004-08-30 | 22:22:22 | lolo
Diese sollen so ausgegeben werden:
2004-09-04 | 12:45:42 | lele
2004-09-04 | 12:05:32 | lala
2004-09-03 | 23:48:11 | lili
2004-09-03 | 23:17:09 | lulu
2004-08-30 | 22:22:22 | lolo

Verfasst: 04.09.2004 12:49
von PhilippK
Un wie werden sie mit deinem Befehl ausgegeben?

Gruß, Philipp