Skip to main content

Alles für die Homepage... Scripte, Templates, Workshops und Support

PHP – Seitenweise Anzeige von Datensätzen (Blätterfunktion)

Oft möchte man aus einer Datenmenge nicht alle Datensätze auf einer Seite ausgeben, z.B. in einem Gästebuch, einem Forum, einer Bildergalerie usw. Hier hilft die im Artikel vorgestellte Blätterfunktion. 

Die Routine zur Seitenweisen Ausgabe und der Aufruf im Script

Hier zunächst die komplette Routine

CODE:
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
// Seitennavigation
// $navigationslinks = pager($zeilen, $seite, $daten_per_site, $url, $show_pageinfo);
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
function pager($zeilen, $seite, $pro_seite, $url, $show_pageinfo = 1) {

$max_ausgabe = $pro_seite;
$gesamtseiten = floor(($zeilen - 1) / $pro_seite+1);

$aktuelle_seite = $seite ? $seite : 1;
$linkanzahlausgabe = 2;

$letzte = $linkanzahlausgabe + $aktuelle_seite;
if ($letzte > $gesamtseiten) {
$letzte = $gesamtseiten;
}

$startback = $aktuelle_seite - $linkanzahlausgabe;
if ($startback < 1) {
$startback = 1;
}

$navigationslinks = "&nbsp;";
if ($gesamtseiten != 1 && $zeilen) {
$seitenlink = "";

if ($startback > 1) {
$prevbl = $aktuelle_seite - 1;
$seitenlink .=  "<td class=\"pl\"><a href=\"$url=1\" title=\"Erste Seite aufrufen\">&#171; &#171;</a></td><td class=\"pl\"><a href=\"$url=$prevbl\" title=\"Eine Seite zurück\">&#171;</a></td>";
}

for ($i = $startback; $i <= $letzte; $i++) {
if ($aktuelle_seite == "$i") {
$seitenlink .= "<td class=\"aktuelleseite\">$i</td>";
} else {
$seitenlink .= "<td class=\"pl\"><a href=\"$url=$i\">$i</a></td>";
}
}

if ($letzte < $gesamtseiten) {
$nextbl = $aktuelle_seite + 1;
$seitenlink .= "<td class=\"pl\"><a href=\"$url=$nextbl\" title=\"Eine Seite weiter\">&#187;</a></td><td class=\"pl\"><a href=\"$url=$gesamtseiten\" title=\"Letzte Seite aufrufen\">&#187; &#187;</a></td>";
}

if ($show_pageinfo == 1) { 
$pageinfo = "<td class=\"seiteninfo\">Seite: $aktuelle_seite von $gesamtseiten</td>";
} else {
$pageinfo = '';
}
$navigationslinks = "<table cellspacing=\"1\" cellpadding=\"0\" border=\"0\" class=\"sitenav\"><tr>$pageinfo $seitenlink</tr></table>";
}

return $navigationslinks;
}

Um die Ausgabe entsprechend mit CSS zu gestalten braucht es diesen CSS Code

CODE:
/* - - - - - - - - - - - - - - - - - - - - */
/* SEITENNAVIGATION */
/* - - - - - - - - - - - - - - - - - - - - */

.seiteninfo, .aktuelleseite, .pl {
font-family: Verdana, Arial;
font-size: 11px;
text-align: center;
color: #000000;
border: 1px solid #97a8b9;
border-collapse: collapse;
}

.seiteninfo {
background-color: #dce0e9;
font-weight: bold;
padding: 1px 3px 1px 3px;
}

.aktuelleseite {
background-color: #ffffff;
font-weight: bold;
padding: 2px 6px 2px 6px;
}

.pl a {
display: block;
float: left;
background-color: #e4e9ed;
color: #990000;
text-decoration: none;
font-weight: bold;
padding: 2px 6px 2px 6px;
white-space: nowrap;
}
.pl a:hover {
color: #000000;
text-decoration: none;
font-weight: bold;
background-color: #d3dce4;
}

Die Verwendung im Script selbst

Für die Seitenweise Anzeige von Datensätzen braucht es diese Parameter

  1. Anzahl an Datensätzen pro Seite, festlegbar durch Setupwert
  2. Gesamtanzahl an vorhandenen Datensätzen
  3. Wo befindet man sich in der Datenmenge

Dieser Code ermittelt/übernimmt die aktuelle Seitenanzahl ($los), $anz legt den Limit Parameter für die Datenbankabfrage fest.

CODE:
if(isset($_GET['los'])) { 
$los = preg_replace ("/[^0-9]/", '',  $_GET['los']);
}
// Startzahl
if(!isset($los) || $los == '') {
$los = 1;
}

$anz = ($los-1) * $scriptconf[DATENPROSEITE];

Nun wird mit einer für die Daten geeigneten DB-Abfrage die Anzahl der Gesamtdatensätze ermittelt und in den Datenabfrage Query diese Limit Klausel eingefügt

CODE:
SELECT FROM tabelle .... LIMIT $anz, $scriptconf[DATENPROSEITE]

Als nächstes wird mittels des Aufrufes der Blätterfunktion die Seitennavigation abgerufen:

CODE:
$navigationslinks = pager($gesamtdatensaetze, $los, $scriptconf[DATENPROSEITE], "script.php?los", 1);

Die eigentlichen Datensätze werden dann in einer While Schleife ausgelesen…

CODE:
while($data = mysql_fetch_array($result)){

$daten .= "Die auszugebenden MySQL Ergebnisse";

}

Nun braucht nur noch die Ausgabe erfolgen, die Werte können dabei z.B. an eine Templateroutine gesendet werden, oder einfach per echo ausgegeben werden.

CODE:
// Navigationslinks oben
echo $navigationslinks;
// Ausgabedaten
echo $daten;
// Navigationslinks unten
echo $navigationslinks;

Wie die Blätterroutine funktioniert kann man sich hier ansehen


Ähnliche Beiträge



Keine Kommentare vorhanden


Du hast eine Frage oder eine Meinung zum Artikel? Teile sie mit uns!

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *