Geschrieben von shandris am 08.06.2004, 12:10

Hallo Zusammen

In diesem Tutorial werde ich euch erklären, wie man auf einer Page den Teil zum Seitenblättern macht. In meinem Beispiel werde ich es für ein Gästebuch mit dem Dateinamen "guestbook.php" verweden.

Voraussetzungen:

- Gästebuch ohne diese Funktion
- gutes Vorstellungsvermögen
- gute Motivation
- Zeit

Wenn du all diese Voraussetzungen erfüllst, darfst du jetzt mit dem lesen beginen... Viel Spass!

Wichtige Variabeln:
$seiten -> Anzahl Seiten, die man vor und nach der aktuellen anwählbar haben möchte. (Zahl)
$site -> Die Seite auf wer man sich befindet. (Zahl)
$eintraege -> Wie viele Einträge man pro Seite dargestellt haben möchte. (Zahl)
$id -> Die Nummer des obersten, aktuell angezeigten Gästebucheintrages. (Zahl)
$table -> Der Name unsere MySQL Tabelle, aus welcher wir die Einträge auslesen. (String)
$gesamt -> Gesamte Anzahl der Einträge. (Zahl)
$gesamtseiten -> Die Gesamte Anzahl der Seiten. (Zahl)
$forstart -> Der Startpunkt der Forschleiffe. (Zahl)
$forend -> Das Ende der Forschleiffe. (Zahl)

Ergebnis:
Als Ergebnis möchte ich, dass man auswählen kann wie viele Einträge man pro Seite möchte und auf welche Seite man springen möchte. Wichtig finde ich es auch noch, dass man auf die erste und letzte Seite direkt springen kann, wenn sie nicht sofort sichtbar ist...

<?php
// MySQL Config
mysql_connect("localhost", "username", "password") OR die(mysql_error());
mysql_select_db("datenbank_35") OR die(mysql_error());

// <-- start seitenblätterfunction
$seiten = 4;
$table = "guestbook";
// zwei der erklärten Variabeln werden gesetzt

if (!isset($_GET['site'])) $site = 1; else $site = $_GET['site'];
// $site wird entweder über GET deklariert oder wenn nicht vorhanden auf eins gesetzt
if (!isset($_POST['eintraege']) AND !isset($_GET['eintraege']) AND !isset($eintraege)) $eintraege = 5;
// wenn $eintraege noch nicht per GET, POST oder sonst gesetzt wurde, wird es auf fünf gesetzt
if (!empty($_POST['eintraege'])) $eintraege = $_POST['eintraege'];
if (!empty($_GET['eintraege'])) $eintraege = $_GET['eintraege'];
// hier werden POST und GET eintraege "abgefangen" und in die Variabel $eintraege übergeben dies benötigen wir wegen dem Select-Menu
?>
<a href="guestbook.php?eintragen=true">Eintragen</a><br>
<form name="eintraege" method="post" action="guestbook.php">
<select name="eintraege" onChange="document.eintraege.submit();">
<option value="5"<?php if ($eintraege == 5) echo " selected"; ?>>5</option>
<option value="10"<?php if ($eintraege == 10) echo " selected"; ?>>10</option>
<option value="15"<?php if ($eintraege == 15) echo " selected"; ?>>15</option>
<option value="25"<?php if ($eintraege == 25) echo " selected"; ?>>25</option>
<option value="50"<?php if ($eintraege == 50) echo " selected"; ?>>50</option>
<option value="100"<?php if ($eintraege == 100) echo " selected"; ?>>100</option>
</select>
</form>
// Dieser HTML-Code gibt ein Selectmenu aus, in welchem man wählen kann wie viele Einträge man pro Seite möchte.
<?php
$id = $eintraege * ($site-1);
// Die Nummer des obersten Eintrages wird berechnet.

$sql = "SELECT * FROM ".$table;
$result = mysql_query($sql) OR die(mysql_error());
$gesamt = mysql_num_rows($result);
// Wir finden mit einer MySQL Abfrage heraus, wie viele Einträge wir haben und speichern es in $gesamt.

$sql = "SELECT id, author, mail, page, date, text FROM ".$table." ORDER BY date DESC LIMIT ".$id.", ".$eintraege;
$result = mysql_query($sql) OR die(mysql_error());
// Hier wird unsere Abfrage aus der Datenbank mit dem dem Start bei $id und limitiert auf $eintraege Einträge.

// Im kommenden Teil weren wir die anwählbaren Seiten mit einer Forschleiffe auslesen.
$forstart = $site-$seiten;
$forend = $site+$seiten;
// Der Start- und Endpunkt Forschleiffe werden definiert.
$gesamtseiten = ceil($gesamt/$eintraege);
// $gesamtseiten wird so berechnet, dass man $gesamt durch $eintraege Teilt und das Ganze dann auf die nächste ganze Zahl aufrundet (ceil).
if ($forstart > 1) { echo "<a href='guestbook.php?eintraege=".$eintraege."&site=1'><b>&lt;&lt;&nbsp;&nbsp;</b></a>\n"; }
// Wenn die erste Seite nicht sichtbar ist, wird "<<" ausgegeben.
if ($id > 0){ echo "<a href='guestbook.php?eintraege=".$eintraege."&site=".($site-1)."'><b>&lt;&nbsp;&nbsp;</b></a>\n"; }
// Wenn wir nicht auf der ersten Seite sind, wird ein "<" augegeben, damit wir eine Seite zurück gehen können.
for ($i = $forstart; $i <= $forend; $i++)
{
// Die Forschleiffe wird gestartet und soll nun von $forstart bis $forend zählen.
if ($i > 0){
// Dies bewirkt, dass niemals negative Seitenzahlen ausgegeben werden.... *
if ($i <= $gesamtseiten){
if ($i == $site){ echo "<b>[".$i."]&nbsp;&nbsp;"."</b>\n"; } else
{ echo "<a href='guestbook.php?eintraege=".$eintraege."&site=".$i."'><b>".$i."</b></a>&nbsp;&nbsp;\n"; }
// Wenn $i die aktuelle Seite ist, dann wird nur die Seitenzahl mit [ + ] ohne Link ausgegeben. Und sonst wird $i mit einem Link auf die $i-te Seite geschrieben.
}
} else { $forend++; }
// *... und am Schluss eine Seite mehr dargestellt wird.
}
if ($id < $gesamt-$eintraege){ echo "<a href='guestbook.php?eintraege=".$eintraege."&site=".($site+1)."'><b>&gt;</b></a>\n"; }
// Wenn wir nicht auf der letzten Seite sind, wird ein ">" augegeben, damit wir eine Seite nach hinten gehen können.
if ($forend < $gesamtseiten) { echo "<a href='guestbook.php?eintraege=".$eintraege."&site=".$gesamtseiten."'><b>&nbsp;&nbsp;&gt;&gt;</b></a>\n"; }
// Wenn die letzte Seite nicht sichtbar ist, wird ">>" ausgegeben.

// ende seitenblätterfunktion -->
?>

So, das wars auch schon... ich hoffe das Ganze ist nun für euch verständlich.

MFG,
Shandris

Bewertung Anzahl
5
33,3 %
1 Bewertungen
4
66,7 %
2 Bewertungen