Makepagenav
Aus PHP-Fusion Wiki
Mithilfe der makepagenav Funktion kannst Du eine lange Seite in mehrere unterteilen und eine Navigation anzeigen lassen. Zum Beispiel wird die Newsseite mit der Zeit ziemlich lang, so das es sich anbietet nur noch die neusten fünf oder zehn News anzuzeigen. Und genau diese Aufgabe erledigt die makepagenav Funktion und sie ist so aufgebaut, das sie an beliebigen anderen Stellen ebenfalls genutzt werden kann.
Inhaltsverzeichnis |
[Bearbeiten] Funktion und Parameter
makepagenav($start, $count, $total[, $range][, $link]);
[Bearbeiten] $start
gibt an, was auf der gerade angezeigten Seite der erste Eintrag ist.
[Bearbeiten] $count
gibt an, wieviele Einträge pro Seite angezeigt werden.
[Bearbeiten] $total
gibt an, wieviele Einträge es insgesamt gibt.
[Bearbeiten] $range (optional)
gibt an, wieviele Seiten in der Navigation direkt ausgewählt werden können. Wenn Du zum Beispiel auf Seite Nummer 7 bist und der Range mit 3 angegeben ist, kannst Du 3 Seiten vor und nach der 7. Seite direkt aufrufen.
[Bearbeiten] $link (optional)
gibt den Link zur Seite an. Diese Option ist optional und kann weggelassen werden. Wenn diese Option weggelassen wurde, nimmt PHP-Fusion als Link für die Seitennavigation die aktuelle Seite selber. Sollen aber zusätzlich noch andere Variablen mit übergeben werden, so kann das nur hier gemacht werden.
[Bearbeiten] Ein kleines Beispiel
Da sich einige doch schwer tun und das mit der Seitennavigation nicht so ganz hinbekommen, hier mal ein kleines Beispiel.
Grundsätzliche Infos:
1. Man benötigt eine Variable, wo steht, wieviel Ergebnisse pro Seite angezeigt werden sollen.
2. Die Datenbankanfrage muss speziell zusammengebaut werden, da man die Anfrage eigentlich 2x machen muss, einmal alle ergebnisse und einmal mit der Limitierung der Ergebnisse pro Seite.
3. Der Seitennavigation muss die Url und die evtl. Suchergebnisse mitgegeben werden.
Wir nehmen mal die einfache Anzeige der Downloads, welche ja auch über mehrere Seiten gehen kann.
- <?
- // Wieviele Ergebnisse pro Seite
- $items_per_page = 10;
- //Abfrage der Startzeile
- if (!isset($rowstart) || !isNum($rowstart)) $rowstart = 0;
- //Gesamtanzahl der Ergebnisse ermitteln, der letzte Wert sind die Bedingungen
- $rows = dbcount("(download_id)","downloads","");
- //DB Anfrage zusammenbauen mit Bedingungen falls erforderlich
- $sql = "SELECT * FROM ".$db_prefix."downloads ";
- $sql .= " LIMIT ".$rowstart.",".$items_per_page." ";
- //Anfrage ausführen
- $result = dbquery($sql);
- //Ausgabe der Tabelle (nur Tabellenkopf)
- echo "<table align=\"center\"><tr>";
- echo " <td>ID</td>";
- echo " <td>Name</td>";
- echo "</tr>";
- //Prüfe ob überhaupt Ergebnisse vorhanden sind
- if ( dbrows($result)>0 )
- {
- //Daten einlesen
- while ($data = dbarray($result) )
- {
- //Ausgabe der Ergebnisse zeilenweise
- echo "<tr>";
- echo "<td>".$data['download_id']."</td>";
- echo "<td>".$data['download_title']."</td>";
- echo "</tr>";
- }
- }
- else
- {
- //Ausgabe, wenn keine Einträge in der DB-Tabelle sind
- echo "<td colspan=\"2\">Keine Ergebnisse vorhanden.</td>";
- }
- //Prüfen ob Ergebnisse größer als Ergebnisse pro Seite
- if ($rows>$items_per_page)
- {
- //Wenn dem so ist, baue die Seitennavigation
- echo "<div align='center' style='margin-top:5px;'>\n".makePageNav($rowstart,$items_per_page,$rows,3,"downloads.php&")."\n</div>\n";
- }
- ?>
