Seitenblättern mit PHP und MySQL
Titel: Seitenblättern mit PHP und MySQLSchwierigkeitsgrad: Fortgeschrittene
Autor: admin
Eingetragen: 10.01.2008
Hits: 2356
Kommentare: 0
User Bewertung:



/ 10 User haben abgestimmt Du möchtest deine Unmengen an Datenbankeinträgen auf mehrere Seiten verteilen, weißt aber nicht wie? Hier bekommst du es erklärt.
Das Verteilen von Einträgen über mehrere Seiten hinweg ist garnicht soschwer wie du vielleicht am Anfang denkst. Es beginnt damit, dass duzunächst ermittelst, wie viele Einträge es insgesamt gibt.
1 2 3 |
$result_total = mysql_query('SELECT COUNT(*) as `total` FROM `deine_tabelle`'); |
Du fragst dich vielleicht, warum ich ein COUNT(*) und ein mysql_fetch_assoc nehmen statt einem * und mysql_num_rows. Ganz einfach: COUNT(*) ist viel schneller ;-)
Als nächstes legst du fest, wie viele Einträge du pro Seite anzeigen möchtest. Dies speicherst du in der Variable $ergebnisse_pro_seite. Außerdem errechnest du jetzt, wie viele Seiten es insgesamt geben wird, rundest das mit ceil() auf und speicherst das Ergebnis in $gesamt_seiten.
1 2 |
$ergebnisse_pro_seite = 10; |
Als nächstes musst du prüfen, welche die aktuelle Seite ist. Ich habe hier festgelegt, dass über die URL die aktuelle Seite in seite_nr gespeichert wird. Wenn diese leer oder 0 ist, so wird als $seite die 1 festgelegt. Wurde per URL seite_nr übergeben, so wird nur noch geprüft, ob der übergebene Wert nicht die maximale Anzahl an Seiten überschreitet.
1 2 3 4 5 6 7 8 |
if (empty($_GET['seite_nr'])) { |
Als nächstes musst du errechnen, wo du in der Datenbank jetzt anfängst, die nächsten Einträge zu holen. Das Ergebnis speicherst du in $limit.
1 2 3 4 5 6 7 8 9 10 11 |
$limit = ($seite*$ergebnisse_pro_seite)-$ergebnisse_pro_seite; |
Jetzt hast du alle nötigen Informationen um dir die gewünschten Einträge aus der Datenbank zu holen.
1 2 3 4 |
$result = mysql_query('SELECT `deine_spalte` FROM `deine_tabelle` LIMIT '.$limit.', '.$ergebnisse_pro_seite); |
Die Anweisung holt jetzt ab der Stelle die du mit $limit errechnet hast die Anzahl an Einträge die in $ergebnisse_pro_seite gespeichert sind. Zu guter letzt müssen noch die Seitenzahlen ausgegeben werden.
1 2 3 4 5 6 7 |
for ($i=1; $i<=$gesamt_seiten; ++$i) { |
In $gesamt_seiten hast du am Anfang gespeichert, wie viele Seiten es maximal geben wird. Die IF-Anweisung dient dazu, die aktive Seite hervorzuheben, in diesem Fall wird sie fett dargestellt. Das war auch schon alles. Wenn noch Fragen sind, ab damit in die Kommentare ;-)
Home