Blätterfunktion
Oft ist es nötig eine Datenbank Abfrage auf mehrer Seiten auf zu teilen z.B. bei einem Gästebuch oder einem Newsscript. Wie dies funktioniert, werde ich euch heute zeigen.
Am Anfang des Scriptes stellen wir eine Verbindung zu Datenbank her. Dann wird abgefragt, ob die Variable $page mit GET übergeben worden ist, ist dies nicht der Fall, dann ist man automatisch auf Seite 1. Außerdem wird Berechnet, ab wann die Daten ausgegeben werden sollen und wie viele Seite es geben wird. Zusätzlich wird geprüft, ob die Seite die in $page steht existiert (also ob sie größer als 0 ist und nicht größer wie $seiten_anzahl ist).
PHP:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| <?
@mysql_connect("localhost", "root", "");
@$x=mysql_select_db("datenbank");
if (empty($x)) {
echo "Fehler beim Verbinden mit dem Datenbankserver<br>";
exit;
}
$pro_seite = 10;
$menge = mysql_query("SELECT * FROM tabelle");
$menge = mysql_num_rows($menge);
$seiten_anzahl = $menge / $pro_seite;
$page = $_GET['page'];
if (!isset($page) || !is_numeric($page) || $page > $seiten_anzahl || $page <= 0){
$page = 1;
}
$start = $page * $pro_seite - $pro_seite; |
Dann werden 2 Funktionen deklariert, um Später mit Weiter und Zurück navigieren zu können.
PHP:1
2
3
4
5
6
7
| function back($page) {
return $page - 1;
}
function forward($page) {
return $page + 1;
} |
Jetzt werden die Ergebnisse abgefragt und ausgegeben.
PHP:1
2
3
4
5
6
| $sql = "Select * FROM tabelle Limit $start,$pro_seite";
$query = mysql_query($sql);
while ($ds = mysql_fetch_object($query)){
echo "$ds->id<br>";
} |
Zum Schluss werden die einzelnen Links zu den Seiten ausgegeben.
PHP:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| if ($page == 1){
echo '<div align="center">Zurück ';
} else {
echo '<div align="center"><a href="?page='.back($page).'">Zurück</a> ';
}
for($i=0; $i < $seiten_anzahl; $i++){
$x = $i + 1;
if($page == $x){
echo " <b>$x</b> ";
} else {
echo " <a href=\"?page=$x\">$x</a> ";
}
}
if ($page >= $seiten_anzahl){
echo ' Weiter</div>';
} else {
echo ' <a href="?page='.forward($page).'">Weiter</a></div>';
}
?> |
So, das wars. Fragen bitte an PN.
mfg
forsterm
Dieses Tutorial wurde von forsterm am 04.01.2006 verfasst.
Kommentare
ezias meinte am 02.01.2007 um 07:01 Uhr: Was ist wenn beim berechnen der Seitenanzahl ein ungerades Ergebnis herauskommt? Du solltest die ceil () Funktion mit einbauen ausserdem solltest du mit der SQL eigenen COUNT funktion arbeiten um Server Resourcen zu sparen. |