Geschrieben von khazad-dum am 05.01.2006, 19:23

Wenn man z.B. ein eigenes Gästebuch hat und die Einträge sich mit der Zeit summieren, ist es blöd wenn irgendwann alle Einträge auf einer Seite stehen. Außerdem macht es die Seite riesig groß.
Eine abhilfe ist die Aufteilung der Einträge auf mehrere Seiten. Wie das bei MySQL Gästebücher geht, werde ich euch im Folgenden zeigen.

Als erstes müssen wir herausfinden wieviele einträge es überhaupt gibt. Das machen wir mit einer Simplen MySQL abfrage


$sql ="SELCET `ID` FROM `table`";
$result = mysql_query($sql);
$num = mysql_num_rows($result);

$num enthält jetzt die Anzahl aller Einträge. Falls ihr Einträge ausblenden könnt oder änliches müsst ihr per passender WHERE clausel angeben das diese nicht mitgezählt werden sollen (z.B. "WHERE `mode` != 'delet'").

Nun kommt die Übersicht über die Seiten, dafür müssen wir noch 2 wichtige Variable definieren, und zwar die Anzahl der Einträge, die pro Seite angezeigt werden sollen und die Anzahl der Seiten die sich daraus ergebem.
Wir nennen sie $limit.


$limit = 10;
$sites = ceil($num/$limit); //ceil rundet auf die nächst größere Ganze Zahl auf.

if(!$_GET['site']) $_GET['site'] = 1;
$count = 1;

while($count <= $sites)
{
if($count != $_GET['site'])
{
echo '<A HREF="'.$_SERVER['PHP_SELF'].'?site='.$count.'">'.$count.'</A>';
}
else
{
echo '<B>$count</B>';
}
$count++;
}

Ihr wundert euch vielleicht jetzt was ich mit dem $_GET['site'] will. Ganz simpel: Was will ich mit einer Seitenübersicht und mehreren Seiten wenn ich sie nicht anwählen kann. Deshalb auch der Link.

Jetzt kommt der eigentliche Teil des Codes.
Ihr müsst eure MySQL abfrage jetzt so umändern das sie bei einem bestimmten Beitrag anfängt und mit einem bestimmten Beitrag aufhört auszulesen.
Dafür ist der LIMIT start, limit parameter da. Er fängt beim startsten Eintrag auf den die MySQL abfrage zutrifft an auszulesen und liest limit einträge aus.
limit ist ja klar, das sind unsere 10 Beiträge pro Seite, aber wie komme ich aus start ???
start ist (ganz einfach) die Anzahl der Einträge pro Seite mal der Seite auf der wir sind minus eins (warum minus eins? sonst würden wir ja auf seite eins schon mit dem 10 Beitrag anfangen...)


$start = $limit*($_GET['site']-1);

$sql = "SELECT * FROM `table` LIMIT $start, $limit";
//und hier euer restliches Script

Warscheinlich sieht eure MySQL abfrage nicht so aus, das ist auch nicht schlimm, das einzige was NICHT fehlen darf ist das LIMIT am Ende.
All diese Code-Abschnitte müsst ihr jetzt in euer Gästebuch, oder sonstiges Script in der reihenfolge wie sie hier stehen einfügen. Und vorher noch ein mysql_connect() nicht vergessen ;-)

Bei fragen oder Problemen könnt ihr euch gerne an mich per PN wenden.
mfG Khazad-Dum

Bewertung Anzahl
6
100,0 %
2 Bewertungen