2016-09-20 5 views
0

Ich habe ein Problem, ich erstelle eine Kommentarseite, aber ich möchte alle Ergebnisse auf den Kopf stellen, so dass das letzte Ergebnis am nächsten an der Unterseite sein wird. aber ich brauche auch ein Limit von wie viele Kommentare oder Nachrichten es zeigt. Ich benutze mysqli und php.Umgekehrte Reihenfolge der Ausgabe

$sql = "SELECT id, message FROM messages WHERE name = '$user' ORDER BY id DESC LIMIT 10"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 

     echo "<div id='message'>" . $row["message"]. "</div> "; 
    } 
} else { 
    echo "<p style='color:white;'>No messages have been sent</p>"; 
} 

das Problem dabei ist, es zeigt die Nachrichten, die ich an der Spitze der Seite zuletzt gesendeten statt am unteren

+0

Was ist mit Ihrer aktuellen Anfrage falsch? –

+0

Es zeigt die Nachrichten, die ich zuletzt an der Spitze gesendet habe @TimBiegeleisen – Jackbeeby

+0

Dann ändern Sie Ihre ORDER BY ID DESC auf ORDER BY ID ASC (oder lassen Sie die ASC weg, weil die ASC Standard ist). – Kenjin

Antwort

0

Eine Möglichkeit ist hier Ihre aktuelle Abfrage wickeln und dann die Reihenfolge ändern ORDER BY id ASC:

$sql = "SELECT t.id, t.message FROM" 
     ." (SELECT id, message FROM messages WHERE name = '$user' ORDER BY id DESC LIMIT 10)" 
     ." ORDER BY t.id"; 

aus Gründen der Übersichtlichkeit ist hier eine besser lesbare Version der Abfrage:

SELECT t.id, 
     t.message 
FROM 
(
    SELECT id, message 
    FROM messages 
    WHERE name = '$user' 
    ORDER BY id DESC 
    LIMIT 10 
) t 
ORDER BY t.id 
+0

Seine Arbeit jetzt danke. – Jackbeeby

Verwandte Themen