www

ein Webangebot von rotering-net.de

PHP-Klasse zur Seitennavigation

LGPL 3 - Free Software Ob eine Bildergalerie mit einer großen Anzahl von Schnappschüssen oder ein Gästebuch mit einer Vielzahl an Einträgen: irgendwann wird es töricht alle Elemente auf einer einzigen Seite unterzubringen. Immer dann bietet es sich an, eine dynamische Seite mit Hilfe einer Skirptsprache wie PHP zu erstellen, die vom Grundaufbau gleich bleibt, aber nur einen bestimmten Teil der Elemente anzeigt. Während sich der Grundgedanke noch durchaus mit etwas Programmiereifer umsetzen lässt, hört es meist bei einer professionellen Navigation auf, wenn diese mehr als einfaches Vor- und Zurückblättern unterstützen soll.

Die PageNavigation-Klasse stellt ein elegantes Hilfsmittel für eben solche Seitenstrukturen dar. Sie assistiert nicht nur dabei, die richtigen Elemente auf die Unterseite zu bekommen, sondern kann auch mit einem einzigen Befehl eine ansprechende Seiten-Navigation generieren. Und wer es gerne individuell mag, findet zahlreiche Anpassungmöglichkeiten vor.

Demo

Probieren Sie folgende Demoseiten aus, um einen ersten Eindruck über die Funktionen der Klasse zu bekommen. Zu Demonstrationszwecken sind die Elemente virtueller Natur und vorgeblich 5 pro Unterseite.

Download

Bitte beachten Sie: Diese PHP-Klasse baut auf das Klassenkonzept von PHP 5 auf und ist daher unter PHP 4 und seinen Vorgängern nicht lauffähig.

Anwendungsbeispiel

Zunächst muss die Klasse selbstverständlich in Ihr Skript eingebunden werden.

require_once('pagenavigation.class.php');

Ebenfalls vor Instanziierung der Klasse muss geklärt werden, wie viele Elemente es insgesamt zu verwalten gilt. Dies kann bspw. die Anzahl aller Bilder eine Galerie oder die Anzahl aller Reihen einer Datenbank-Tabelle sein. Als Beispiel sei hier die Abfrage der Anzahl der Reihen einer MySQL-Datenbank-Tabelle aufgezeigt.

$result = mysql_query('SELECT COUNT(*) FROM tabellenname'); $item_count = mysql_result($result, 0);

Anschließend kann die PageNavigation-Klasse instanziiert werden. Als Parameter wird die soeben abgefragte Anzahl aller Elemente und die Anzahl der Elemente pro Seite erwartet. Im nachfolgenden Beispiel sollen 5 Elemente auf jeder Seite angezeigt werden.

$nav = new PageNavigation($item_count, 5);

Nun können wir uns bereits um die eigentliche Anzeige der Elemente kümmern. Die PageNavigation-Klasse bietet uns dazu hilfreiche Attribute an. Im nachfolgenden Beispiel rufen wir unter Verwendung des sql_limit-Attributs zunächst die betreffenen Datensätze aus der MySQL-Datenbank-Tabelle ab und nummerieren sie anschließend seitenübergreifend durch.

$result = mysql_query('SELECT inhalt FROM tabellenname LIMIT ' . $nav->sql_limit); $item_number = $nav->first_item_id; while ($row = mysql_fetch_assoc($result)) { echo '<p><strong>' . $item_number . '.</strong> ' . $row['inhalt'] . '</p>'; $item_number++; }

Unabhängig davon können wir ab dem Zeitpunkt der Instanziierung eine Seiteleiste oder eine Drop-Down-Box generieren, mit dem der Benutzer Unterseiten direkt anwählen kann. Beide lassen sich mit Hilfe von Attributen vorab äußerst individuell anpassen. Als Beispiel soll hier jeweils nur die Grundversion dienen, die wir direkt mittels echo ausgeben.

echo $nav->createPageBar(); echo $nav->createPageSelBox();

Bitte beachten Sie: Möchten Sie auf einer Seite mehr als eine Seitenleiste oder Drop-Down-Box einfügen, so müssen Sie in jedem Fall den optionalen Parameter angeben, mit dem Sie die HTML-ID des Elementes festlegen. Ansonsten wäre Ihr HTML-Quelltext nicht mehr valide. Auch hierzu ein Beispiel.

echo $nav->createPageBar('pagebar-top'); echo $nav->createPageBar('pagebar-bottom');

Methoden

Attribute

Über die Klassenattribute können eine Vielzahl nützlicher Informationen abgerufen oder die Navigationselemente individuell gestaltet werden.

AttributnameBeschreibungStandardwert / Kommentar
cur_page_idNummer der aktuellen Unterseitenur Lesezugriff
first_item_idSeitenübergreifende Nummer des ersten Elements der aktuellen Unterseitenur Lesezugriff
html_label_navlink_nextBeschriftung für den Verweis zur nächsten Unterseite"Nächste Seite"
html_label_navlink_next_symbolBeschriftungssymbol für den Verweis zur nächsten Unterseite"»"
html_label_navlink_prevBeschriftung für den Verweis zur vorherigen Unterseite"Vorherige Seite"
html_label_navlink_prev_symbolBeschriftungssymbol für den Verweis zur vorherigen Unterseite"«"
html_label_pagebarBeschriftung, die vor der Seitenleiste angezeigt wird"Seiten:"
html_label_pagelinkBeschriftung für den Verweis auf eine Unterseite; %p wird durch die Nummer der Unterseite ersetzt"Gehe zur Seite %p"
html_label_pagelink_dividerBeschriftung zwischen zwei Seiten-Blöcken"…"
html_label_pageselbox_buttonBeschriftung, die auf der Schaltfläche der Drop-Down-Box angezeigt wird"Los!"
item_countAnzahl aller Elementenur Lesezugriff
items_per_pageAnzahl der Elemente pro Unterseitenur Lesezugriff
last_item_idSeitenübergreifende Nummer des letzten Elements der aktuellen Unterseitenur Lesezugriff
seit 1.0.3
link count_innerAnzahl der Links auf Unterseiten, die vor und hinter der aktuellen Unterseite in der Seitenleiste angezeigt werden2
link_count_outerAnzahl der Links auf Unterseiten, die am Anfang und am Ende der Seitenleist angezeigt werden2
page_countAnzahl der Unterseitennur Lesezugriff
parameter_nameName des Parameters, der zur Übermittlung der Unterseite übergeben wirdnur Lesezugriff
"p"
show_navlinksWenn true, werden bei der Seitenleiste zusätzlich Links zur vorherigen und nächsten Seite generierttrue
sql_limitVorformatierter String für das SQL-Limitnur Lesezugriff
urlURL, auf die alle Links verweisen sollen; %p wird durch die Nummer der Unterseite ersetzt"?%p"
use_xhtmlWenn true, wird bei der Ausgabe die XHTML-Syntax verwendet, sonst die HTML-Syntaxtrue
seit 1.0.2

Darüber hinaus können auch die HTML-Klassen der Elemente individuell angepasst werden. Da es sich jedoch um eine Vielzahl an Attributen handelt und eher selten angepasst werden müssen, sei an dieser Stelle auf die Attribut-Deklaration der Klasse verwiesen.