|
|
|
Blätterfunktion
Oft ist es sinvoll, wenn man viele Tabelleneinträge hat, diese auf mehreren Seiten auszugeben, damit die Seite sich schneller aufbaut und damit man die Übersicht behält. Soetwas benutzt man oft bei Gästebüchern, Newsscripts, Mitgliederlisten, Newsletterscripts, Foren und so weiter.
Deswegen erfährst du jetzt wie man eine einfache Blätterfunktion programmiert.
Diese Blätterfunktion sollte für die meisten Anwendungen reichen.
Zuersteinmal die komplette Blätterfunktion, die Erklärung findest du dann darunter.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
| <?php
$seite = $_GET["seite"]; //Abfrage auf welcher Seite man ist
//Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1
if(!isset($seite))
{
$seite = 1;
}
//Verbindung zu Datenbank aufbauen
$link = mysql_connect("localhost","Username","Passwort") or die ("Keine Verbindung moeglich");
mysql_select_db("Datenbank") or die ("Die Datenbank existiert nicht");
//Einträge pro Seite: Hier 15 pro Seite
$eintraege_pro_seite = 15;
//Ausrechen welche Spalte man zuerst ausgeben muss:
$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;
//Tabelle Abfragen
//Tabelle heißt hier einfach: Tabelle
$abfrage = "SELECT * FROM Tabelle LIMIT $start, $eintraege_pro_seite";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo $row->id."<br>"; // Hier die Ausgabe der Einträge
}
//Jetzt kommt das "Inhaltsverzeichnis",
//sprich dort steht jetzt: Seite: 1 2 3 4 5
//Wieviele Einträge gibt es überhaupt
//Wichtig! Hier muss die gleiche Abfrage sein, wie bei der Ausgabe der Daten
//also der gleiche Text wie in der Variable $abfrage, bloß das hier das LIMIT fehlt
//Sonst funktioniert die Blätterfunktion nicht richtig,
//und hier kann nur 1 Feld abgefragt werden, also id
$result = mysql_query("SELECT id FROM Tabelle");
$menge = mysql_num_rows($result);
//Errechnen wieviele Seiten es geben wird
$wieviel_seiten = $menge / $eintraege_pro_seite;
//Ausgabe der Seitenlinks:
echo "<div align=\"center\">";
echo "<b>Seite:</b> ";
//Ausgabe der Links zu den Seiten
for($a=0; $a < $wieviel_seiten; $a++)
{
$b = $a + 1;
//Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben
if($seite == $b)
{
echo " <b>$b</b> ";
}
//Aus dieser Seite ist der User nicht, also einen Link ausgeben
else
{
echo " <a href=\"?seite=$b\">$b</a> ";
}
}
echo "</div>";
?>
|
|
Also zuerst wird abgefragt, auf welcher Seite man sich befindet, dies wird dann in der Variable $seite gespeichert. Wer noch die Version 4.0.5 benutzt, muss $_GET["seite"]; benutzen. Dann wird geguckt ob überhaupt eine Seite angegeben wurde, wenn nich, ist man automatisch auf Seite 1.
Danach wird eine Verbindung zur Datenbank aufgebaut, diesen Abschnitt müsst ihr dann bearbeiten wenn ihr den Script testen wollt.
Wenn das getan wurde, wird angegeben, wieviele Einträge man pro Seite haben möchte, in diesem Fall sind es 15 pro Seite, was eigentlich ein ganz guter Wert ist.
In $start wird der Startwert der Ausgabe gespeichert. Wenn man auf Seite 5 ist, so beträgt dieser 60, also wird ab der 60 Zeile die Einträge ausgegeben.
Danach erfolgt eine Abfrage der Tabelle, hier heißt die Tabelle einfach nur: Tabelle, bei der Abfrage ist nur der LIMIT Abschnitt wichtig, wenn man auf Seite 5 ist, so wird ab dem 60 Eintrag die folgenden 15 Einträge ausgegeben.
In die Abfrage können aber auch noch andere Kriterien sein, wie z.B. ORDER BY id DESC oder auch WHERE Kriterien.
So das war jetzt die Ausgabe, wo wir nur die ID ausgegeben haben, jetzt möchten wir dem User auch die Links zu den einzelnen Seiten ausgeben, dazu Fragen wir die Tabelle ab, wichtig hierbei ist, dass wir die gleichen Kriterien benutzen (WHERE...), wie bei der Ausgabe der Daten, bis auf das LIMIT, das darf dort nicht stehen, und es reicht wenn wir nur 1 Feld abfragen, z.B. id.
Danach finden wir herraus, wieviele Zeilen in der Tabelle sind, und speichern diesen Wert in $menge. Den Wert teilen wir durch die Einträge pro Seite.
In einer for-Schleife geben wir dann die einzelnen Seiten aus, aber wenn der User auf der gleichen Seite ist wie die, die gerade ausgegeben wird, so erstellt der PHP Script keinen Links, sondern nur eine fettgeschriebenen Zahl.
So das wars dann auch mit der Blätterfunktion, ich hoffe sie hilft euch weiter wenn ihr z.B. ein Gästebuch erstellen wollt. Aber ihr müsst aufpassen, das ihr nich zuviele Seiten habt, denn wenn dort 100 Links zu 100 Unterseiten sind, sieht das nicht besonders gut aus.
Wie man dieses Problem löst erfahrt ihr in unserem Codeschnipsel:
Erweiterte Blätterfunktion. Dieses Anleitung ist aber nicht unbedingt für den Anfänger geeignet, dieser sollte evt. erst versuchen mehr Erfahrung in PHP zu erlangen.
Autor Andavos
|
|
|
|