Seitenblättern mit PHP und MySQL

Titel: Seitenblättern mit PHP und MySQL
Schwierigkeitsgrad: Fortgeschrittene
Autor: admin
Eingetragen: 10.01.2008
Hits: 15432
Kommentare: 0
User Bewertung: / 32 User haben abgestimmt

1 2 3 4 5

Social-Bookmark:

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`');
$row_total mysql_fetch_assoc($result_total);
$gesamte_anzahl $row_total['total'];

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;
$gesamt_seiten ceil($gesamte_anzahl/$ergebnisse_pro_seite);

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'])) {
    
$seite 1;
} else {
    
$seite $_GET['seite_nr'];
    if (
$seite $gesamt_seiten) {
        
$seite 1;
    }
}

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;
/*
Bespiel Rechnung
Seite 1
$limit = (1*10)-10;
$limit = 0; << Startposition

Seite 2
$limit = (2*10)-10;
$limit = 10; << Startposition
*/

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);
while (
$row mysql_fetch_assoc($result)) {
    
// Ausgabe deiner Daten

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) {
    if (
$seite == $i) {
        echo 
'<a href="deine_seite.php?seite_nr='.$i.'" style="font-weight: bold;">'.$i.'</a>';
    } else {
        echo 
'<a href="deine_seite.php?seite_nr='.$i.'">'.$i.'</a>';
    }
}

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 ;-)

Kommentare


Kommentar hinzufügen

Benutzername*
E-Mail
Titel*
Dein Kommentar*
Captcha*