2012-04-09 7 views
4

Ich versuche ein Skript zu schreiben, das Zeilen aus einer mySQL-Datenbank zurückgibt. Im Grunde erhalten die Benutzer auf meiner Seite "Erfahrungspunkte" und steigen "Ränge" basierend auf der Anzahl der Erfahrungspunkte, die sie bekommen.mySQL-Datenbankabfrage LIMIT-Hilfe ... Wie erstellt man Seiten, wenn die Anzahl der zurückgegebenen Zeilen 'x' überschreitet?

Ich habe eine Seite namens "recentexp.php" wo alle jüngsten exp in einer Tabelle angezeigt wird, mit den neuesten an der Spitze.

Wie schreibe ich einen Code, der mehr Seiten erstellt, je mehr Ergebnisse zurückgegeben werden?

Wenn es weniger als 10 Zeilen gibt, dann haben Sie keine Seitennummern, und zeigen Sie nur Seite 1. Wenn jedoch 12 Zeilen zurückgegeben werden, dann haben Sie die 10 neuesten (mit den neuesten an der Spitze) auf meinem Seite, und dann PHP erstellen eine Seite "2", wo die 2 ältesten Zeilen platziert sind.

Wenn ich das schlecht erklärt habe, entschuldige ich mich. Ich bin erschöpft .. langer Tag.

Danke!

+1

Sie suchen für [pagination - link] (http://php.about.com/od/phpwithmysql/ss/php_pagination.htm). –

Antwort

11

Sie können LIMIT x, y verwenden, um die y Ergebnisse nach x anzuzeigen.

Nehmen wir an, Sie haben eine Variable $page, die durch $_GET oder durch andere Mittel durchgeführt wird. $page ist standardmäßig 1 oder ein numerischer Wert, der die Seitennummer angibt.

Sie können dann wählen Sie die Zeilen dieser Seite über:

SELECT * FROM `table` WHERE `condition` = ? LIMIT ($page - 1) * 10, 10 

Sie 10 mit, wie viele Ergebnisse pro Seite ersetzen. Wie Sie sehen können, lautet die Abfrage, wenn die Seitennummer 1 ist:

Zeigt die ersten 10 Ergebnisse an. Wenn die Seitennummer 2 ist, diese Abfrage ist:

SELECT * FROM `table` WHERE `condition` = ? LIMIT 10, 10 

, die die zehn Zeilen nach der 10. Zeile zeigt, dh Zeilen 11-20 (!, Die auf Seite 2 sein sollte)

+1

Danke für die schnelle Antwort! Was für "LIMIT 10, 10", sollte das nicht "LIMIT 10, 20" sein? –

+2

Nein, die zweite Zahl ('y', in meinem ersten Beispiel) ist die Anzahl der Zeilen nach der ersten Zahl (' x'). Die zwei Zahlen sind nicht der Bereich der Zeilen selbst. Lassen Sie uns zwei verschiedene Zahlen zur Verdeutlichung verwenden: "LIMIT 10, 15" sagt, dass Sie die nächsten 15 Zeilen nach der 10. Zeile erhalten, also würde es die Zeilen 11-25 zurückgeben. –

Verwandte Themen