MySQL Datenbank "von hinten" auslesen
-
Hallo
Ich möchte gerne via PHP ein paar Daten aus einer MySQL-Datenbank holen. Dabei sollen es die letzen 5 (oder auch 10) Einträge sein. Das sollte inetwa so aussehen:
$SQL = "SELECT * FROM `News` LIMIT 0 , 5"; $SQL_Query = mysql_query($SQL); if (!$SQL_Query) { echo "<p> SQL Fehler </p>"; exit; } $data = mysql_fetch_row($SQL_Query); for ($i = 0; $i < 5; $i++) {
Problem1: "LIMIT 0, 5" nimmt die ersten 5 und nicht die letzten 5 Einträge.
Problem2: Wie kann ich nun einzelne Werte gescheiht auslesen? Also z.B. so "2.-letze Zeile, Wert Nr. 3"Danke sehr!
-
Nach langem Googlen hab ich nun eine Möglichkeit gefunden:
$SQL = "SELECT * FROM `News` ORDER BY `Datum` DESC LIMIT 0,5"; $SQL_Query = mysql_query($SQL); if (!$SQL_Query) { echo "<p> Es gibt leider Server-Probleme </p>"; exit; } for ($i = 0; $i < $to; $i++) { $data = mysql_fetch_row($SQL_Query); echo data[0]." - ".data[1]; }
-
Besser waere:
<html> <body> <?php if(($con=mysql_connect($host,$user,$pass))!==false && mysql_select_db($db,$con)) { $sql="SELECT * FROM tabelle ORDER BY feld DESC LIMIT 5;"; if(($res=mysql_query($sql,$con))!==false) { echo "<table>\n"; while(($rec=mysql_fetch_row($res))!==false) { echo "<tr>"; foreach($rec as $r) { echo "<td>".htmlentities($r)."</td>"; } echo "</tr>\n"; } echo "</table>\n"; } else { echo "Fehler bei der SQL-Abfrage:<br><pre>" .htmlentities(mysql_error($con)) ."</pre>"; } mysql_close($db_con); } else { echo "Fehler bei der Datenbankverbindung:<br><pre>" .htmlentities(mysql_error($con)) ."</pre>"; } ?> </body> </html>
-
Du hast ein Designproblem.
Wenn Du einen Autoinc oder zumindest ein Datum hast dann kannst Du danach sortieren und limit anwenden.Ein RDBMS garantiert nicht die Reihenfolge der Einträge in der DB.
Es liefert die Daten unsortiert.
Was wenn die Daten bereits im Speicher stehen und zwar anders sortiert.
Dann ist Deine Reihenfolge falsch.