MySQL-Tabellen ID's auslesen

g-zus

Erfahrenes Mitglied
Hi Leute!

So, hab jetzt ein extrem verwirrendes Zeugs zussamengeschnippselt und geproggt und hab damit versucht aus einer Tabelle die letzten zwanzig Einträge auszulesen und diese dann zu posten.

mein problem:

Anstatt, dass er von hinten gesehen die letzten Zeilen (letzten 20 ID's!) ausliest und ausgibt.
Gibt er immer nur die zuletzt gespeicherte ID aus...und das unendlich oft! Sieht nicht grad toll au8s...lol

So, habt ihr nun also ein Script parat oder könnt ihr meins hier verbessern?
(ich habs nur asuschnittweise gepostet!)

PHP:
<?

for( $i=0;$i=20;$i++) {

	$aktuelle_id = $max_id-$i;

	@mysql_connect ("$servername", "$dbusername", "$dbpassword") OR die ("Verbindung zum MySQL-Server fehlgeschlagen");
	@mysql_select_db ("$dbname") OR die("Verbindung zur Datenbank fehlgeschlagen");

	$result = mysql_query("SELECT * FROM news WHERE ID $aktuelle_id");
	$sql = mysql_query("SELECT MAX(id) AS newid FROM news");

	if ($row1 = mysql_fetch_array($sql)) {
	do{
	  $max_id = $row1[newid];
	}
	while($row1 = mysql_fetch_array($sql));
	} else {
	}
 
	if ($row = mysql_fetch_array($result)) {
	do{
	  $id = $row[id];
	  $date = date("d.m.y", $row[date]);
	  $nick = $row[nick];
	  $title = $row[title];
	  $comment = $row[comment];
	  $comment = enable_url(enable_tags(strip_tags($comment)));
	  $comment = wordwrap($comment, 10, "\n", 1);
	  $comment1 = $row[comment1];
	  $comment1 = enable_url(enable_tags(strip_tags($comment1)));
	  $comment1 = wordwrap($comment1, 10, "\n", 1);
	  $comment2 = $row[comment2];
	  $comment2 = enable_url(enable_tags(strip_tags($comment2)));
	  $comment2 = wordwrap($comment2, 10, "\n", 1);
	  replace_text_smiley();

	} 
	while($row = mysql_fetch_array($result));

        echo "BLABLABLA"; //Hier wird alles ausgegeben!

        } 
	else {

	echo "BLABLABLA was anderes..."; //ich glaube hier kommt
        //das hin, das dastehen soll, wenn die tabelle
        //noch leer is; war beim ursprünglichen script so (!!!)

	}
	@mysql_close($servername);

}

?>

Ich weiß, dass einiges unnütz is oder so, aber ich hab von PHP kaum Ahnung und hab mir das alles von Foren oder so zusammengeschnipselt.

Könnt ihr hier den HAUPTFEHLER finden, warum er unendlich oft die letzte Zeile (da, wo die ID halt am größten ist!) ausspuckt und nicht die letzten 20 Zeilen?


Kann es vielleicht daran liegen, dass ich keine Schleife drin habe, die abfragt, ob überhaupt schon 20 zeilen in der Tabelle vorhanden sind und es daher zu einem Fehler kommt?
 
Du hättest Dir das ganze Zeug auch sparen können. Um die letzten IDs auszulesen sortierst du absteigend nach IDs und liest nur die ersten 20 aus. Das lässt sich alles mit mySQL realisieren.

PHP:
// Angenommen die Verbindung zur Datenbank besteht.

$result = @mysql_query ("SELECT * FROM news ORDER BY id DESC LIMIT 0,19");

if (@mysql_num_rows ($result) > 0) {
  // Ausgabe der News wobei die höchste ID oben steht.
} else {
  // Ausgabe wenn die Tabelle noch leer ist.
}
 
Zurück