Sortierproblem

Jon02

Mitglied
ich hab folgendes problem:
ich habe eine Shoutbox in der die aktuellsten zuunterst sind aber ich will nur die 5 Aktuellsten.
ich habe es schon mit "LIMIT 5" probiert, was auch geht aber es zeigt mir bloss die 5 ältesten, dem datum nach absteigend sortiert.
könnte man per mysql die "anzahl datensäze" in eine Variable spechern und minus "anzahl der anzuzeigenden datensätze" rechnenen und mit
Code:
 LIMIT position, "anzahl der anzuzeigende datensätze";
die 5 aktuellsten richtig sortiert ausgeben?

danke jetz schon für die Hilfe
 
Dann könntest Du vielleicht mit einem Subquery was werden.
Nur ein Versuch:
Code:
SELECT *
    FROM (SELECT *
        FROM user
            ORDER BY geburtstag DESC
            LIMIT 0 , 5
    ) AS temp
ORDER BY geburtstag ASC

EDIT: Habe das Beispiel noch mal geändert. Diesmal ist es getestet (auf einer Tabelle User, die eine Spalte Geburtstag als DATE gespeichert hat).
 
Zuletzt bearbeitet:
Ja, Subqueries werden erst ab Version 4.1 unterstützt.
Du must das Subquery vorweg ausführen.
Code:
SELECT id FROM user
            ORDER BY geburtstag DESC
            LIMIT 0 , 5
Die IDs schreibst Du in ein Array und machst mit implode(',',$array) einen String, in dem die IDs mit Komma getrennt sind.
Dann führst Du folgendes Query aus:
Code:
SELECT * FROM user 
WHERE id IN (hier den String einfügen)
ORDER BY geburtstag ASC
Soweit zum allgemeinen Vorgehen, um Subqueries in älteren Versionen zu verwenden.
In Deinem Fall kannst Du auch
Code:
SELECT * FROM user
            ORDER BY geburtstag DESC
            LIMIT 0 , 5
ausführen, die Ergebnisse in einem Array zwischenspeichern und dann das Array mit [phpf]array_pop[/phpf] in einer Schleife von hinten auslesen und ausgeben.

PHP:
$result=mysql_query("SELECT * FROM user
            ORDER BY geburtstag DESC
            LIMIT 0 , 5");
$arr=array();
while($row=mysql_fetch_assoc($result)) {
    $arr[]=$row;
}
while ($row=array_pop($arr)) {
    //Ausgabe
}

Gruß hpvw
 
Zurück