Wenn beispielsweise in Gästebüchern Einträge aus einer Datenbank ausgelesen werden, findet sich zumeist eine Blätterfunktion: pro Seite werden nur soundsoviele Beiträge angezeigt, sodass man dann von Seite zu Seite weiterblättern kann. Wie man eine solche Funktion realisiert, wird hier erklärt.
Voraussetzung
Die Grundzüge im Umgang mit Datenbanken werden in diesem Tutorial vorausgesetzt, ebenso das Vorhandensein einer Tabelle, aus der man nun Daten auslesen und auflisten möchte (benötigt wird auf jeden Fall die Spalte “id”).
wohin damit?
Im Folgenden erläutere ich den notwendigen Code Schritt für Schritt, am Ende hat man dann also das komplette Script fertig zum Kopieren. Dies fügt man an der Stelle im Quelltext der Seite ein, wo die Daten ausgegeben werden sollen, unterhalb davon befindet sich dann die Seitenangabe.
auf welcher Seite?
Los geht’s!
Als Erstes wird abgefragt, auf welcher Seite man sich befindet – schließlich wird das Script später anzeigen, ob man sich gerade auf Seite 3, 4 oder weiß der Geier wo aufhält. Dies beeinflusst erstens, welche Daten überhaupt ausgegeben werden sollen, und zweitens die Darstellung der Seitenangabe unten.
Falls keine Seitenanzahl angegeben ist, wird dies als Seite 1 definiert.
<?php
$seite = $_GET["seite"];
if(!isset($seite))
{
$seite = 1;
}
?>
Verbindung zur DB
Jetzt stellen wir die Verbindung zur Datenbank her – falls bereits vorhanden, kann man hier auch die db.php includen. Die Daten müssen hier natürlich noch angepasst werden. ;-)
<?php
$host = "localhost";
$user = "username";
$pass = "passwort";
$dbase = "datenbankname";
$link = mysql_connect("$host" ,"$user" , "$pass")
OR DIE ("Keine Verbindung zur Datenbank möglich!");
$db = mysql_select_db($dbase , $link)
OR DIE ("Die Auswahl der Datenbank ist nicht möglich.");
?>
wie viele Einträge pro Seite?
… dürfte selbsterklärend sein. Der Wert kann natürlich beliebig verändert werden.
<?php
$eintraege_pro_seite = 5;
?>
etwas Mathematik
Hier wird nun berechnet, welche Einträge angezeigt werden sollen.
<?php
$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;
?>
Auslesen der Daten
Als Nächstes werden die Daten aus der Tabelle ausgelesen. Dazu muss man angeben, welche Reihen in welcher Tabelle abgefragt werden sollen. Anstelle von reihe1, reihe2, tabelle usw. setzt du daher deine eigenen Bezeichnungen ein. Die Gestaltung des Divs ist ebenso dir überlassen.
<?php
$abfrage = "SELECT id,reihe1,reihe2 FROM tabelle LIMIT $start, $eintraege_pro_seite";
$ergebnis = mysql_query($abfrage);
while ($row=mysql_fetch_array($ergebnis))
{
$id=$row["id"];
$reihe1=$row["reihe1"];
$reihe2=$row["reihe2"];
?>
<div>
<span class="reihe1"><?php echo $reihe1; ?></span>
<br />
<?php echo $reihe2; ?>
</div>
<?php
} // while
?>
die Seitenangabe
Unterhalb der Ausgabe der Daten soll nun ja das “Inhaltsverzeichnis” stehen, in dem angebenen wird, auf welcher Seite man sich aktuell befindet und zu welchen anderen Seiten man springen kann.
Wichtig: hier muss wieder anstelle von “tabelle” der jeweilige Tabellenname eingesetzt werden!
<?php
$result = mysql_query("SELECT id FROM tabelle");
$menge = mysql_num_rows($result);$wieviele_seiten = $menge / $eintraege_pro_seite;
echo "<div>";
echo "Seite: ";
for($a=0; $a < $wieviele_seiten; $a++)
{
$b = $a + 1;
if($seite == $b)
{
echo "$b";
}
else
{
echo "<a href=\"?seite=$b\">$b</a> ";
<div>";
?>
Fertig!
