heute möchte ich das Prinzip einer Seiten- oder Blätterfunktion erläutern.
Als erstes müssen wir ein paar Variablen setzen:
PHP-Code:
<?php
/**
* Die Variable "entrys" enthält einen ganzzahligen Wert, den man normalerweise
* mit der Anzahl der Datensätze füllt. Zu Demonstrationszwecken schreibe ich
* einfach einen Integer-Wert hinein.
*/
$entrys = 412;
/**
* "perpage" enthält einen numerischen Wert, der die maximale Anzahl von Einträgen
* pro Seite enthält.
*/
$perpage = 10;
?>
PHP-Code:
<?php
/**
* Die Funktion limitSQL errechnet die Werte für eine LIMIT-Anweisung in einem
* SQL-Statement.
* @param perpage Die Anzahl Datensätze pro Seite, optional. Default-Wert: 25
* @return array Ein Array mit dem LIMIT-Offset und dem LIMIT-Rowcount.
*/
function limitSQL($perpage = 25) {
global $page;
if (!$page || $page < 1) {
$page = 1;
}
$min = ($page - 1) * $perpage; // Startwert ermitteln
$max = $min + $perpage; // Der Endwert ist der Startwert + Einträge / Seite
$out = array($min,$max);
return $out; // Rückgabewert ist ein array mit den beiden Werten
}
?>
PHP-Code:
<?php
/**
* Die Funktion createPages erzeugt eine Seitennavigation
* @param input Die Anzahl der Datensätze
* @param perpage Die Anzahl der Datensätze pro Seite
* @return string Einen HTML-String mit der Navigation.
*/
function createPages($input, $perpage = 25) {
global $page, $_SERVER;
if (empty($input))
die("createPages(<b>\$input = $input</b>, \$perpage = $perpage"); // Sollte kein gesamtwert übergeben werden bricht die Funktion mit einer fehlermeldung ab.
if ($input <= $perpage) // Sollten es zu wenig Einträge für mehrere Seiten sein, gibts halt nur eine.
return "« <b>1</b> »"; // HTML-Rückgabe
if (!$page || $page < 1) {
$page = 1; // Sollte man an der URL rumspielen oder sollte $page noch nicht gesetzt sein wir $page auf 1 gesetzt.
}
$pages = ceil($input / $perpage); // Die Anzahl der Seiten errechnet sich aus dem aufgerundeten Ergebnis von dem Bruch [ANZAHL EINTRÄGE] / [PRO SEITE]
$html = ""; // Der Rückgabestring wird geleert.
if ($page > 1) { // Sollte die aktuell angewählte Seite größer als Eins sein kann man zurück Blättern, der linke Pfeil wird aktiviert. Wenn nicht wird er deaktiviert.
$html .= "<a href=\"".$_SERVER["PHP_SELF"]."?page=".($page-1)."\">«</a>";
} else {
$html .= "«";
}
for($i = 1; $i <= $pages; $i++) { // Solange $i kleiner oder gleich der Anzahl der Seiten ist wird eine Seitenzahl hinzugefügt.
if ($i == $page) { // Ist man auf der aktuellen Seite wird der Link deaktiviert und die Zahl [b]bold[/b] gedruck.
$html .= "<b>".$i."</b>";
} else {
$html .= "<a href=\"".$_SERVER["PHP_SELF"]."?page=".$i."\">".$i."</a>";
}
}
if ($page <= $pages-1) { // Ist die aktuelle Seite kleiner oder gleich der gesamtseiten - 1?
$html .= "<a href=\"".$_SERVER["PHP_SELF"]."?page=".($page+1).">»</a>"; // Ja, "Vorwärtsblätterlink" erstellen.
} else {
$html .= "»"; // Nein
}
return $html; // Den String zurückgeben.
}
?>



Kommentar schreiben

Bereiche
Kategorien
Forum - Programming





Artikel bewerten