locomputing
Weitere Pagination 
Hier ein besseres Beispiel:
Variablen bestimmen
<?php
if(isset($_GET['seite']))
{
$seite=preg_replace("/[^0-9]/", "", $_GET['seite']);
}
if(!isset($seite) || $seite == '')
{
$seite=1;
}
Einträge per Seite / variabel
$pagseite="2";
?>
Entsprechende Datenbank Verbindung einfügen
Einträge zählen
<?php
$stmt=$msql->prepare("SELECT COUNT(*) FROM a_table");
$stmt->execute();
$number=$stmt->get_result()->fetch_row();
$number=$number[0];
$seiten=ceil($number/$pagseite);
$start=$seite * $pagseite - $pagseite;
?>
<?php
$stmt=$pdo->prepare("SELECT COUNT(*) FROM a_table");
$stmt->execute();
$number=$stmt->fetchColumn();
$seiten=ceil($number/$pagseite);
$start=$seite * $pagseite - $pagseite;
?>
Datenbank Abfrage
<?php
$stmt=$msql->prepare("SELECT spalte1, spalte2 FROM a_table ORDER BY id LIMIT $start, $pagseite");
$stmt->execute();
$result=$stmt->get_result();
while ($row=$result->fetch_assoc())
{
echo $row['spalte1'];
echo $row['spalte2'];
}
?>
oder gleich als Variablen ausgeben
<?php
$stmt=$msql->prepare("SELECT spalte1, spalte2 FROM a_table ORDER BY id LIMIT $start, $pagseite");
$stmt->execute();
$stmt->bind_result($spalte1, $spalte2);
while ($stmt->fetch())
{
echo $spalte1;
echo $spalte2;
}
<?php
$stmt=$pdo->prepare("SELECT spalte1, spalte2 FROM a_table ORDER BY id LIMIT $start, $pagseite");
$stmt->execute();
while ($row=$stmt->fetch())
{
echo $row['spalte1'];
echo $row['spalte2'];
}
?>
oder gleich als Variablen ausgeben
<?php
$stmt=$pdo->prepare("SELECT spalte1, spalte2 FROM a_table ORDER BY id LIMIT $start, $pagseite");
$stmt->bindColumn(1,$spalte1);
$stmt->bindColumn(2,$spalte2);
$stmt->execute();
while ($stmt->fetch())
{
echo $spalte1;
echo $spalte2;
}
Objekt schließen einfügen
Verbindung beenden einfügen
?>
Funktion Seitenaufteilung / variabel
<?php
function blaettern($seite, $maxseite, $url="foo.php", $get_site="?seite", $anzahl=4)
{
if ($anzahl % 2 != 0) $anzahl ++;
$a=$seite-($anzahl/2);
$b=0;
$blaetter=array();
while ($b <= $anzahl)
{
if ($a > 0 AND $a <= $maxseite)
{
$blaetter[] = $a;
$b ++;
}
else if
(
$a > $maxseite AND ($a - $anzahl - 2) >= 0)
{
$blaetter = array();
$a -= ($anzahl + 2);
$b=0;
}
else if
(
$a > $maxseite AND ($a - $anzahl - 2) < 0)
{
break;
}
$a ++;
}
$return = ""; if (!in_array(1, $blaetter) AND count($blaetter) > 1)
{
if (!in_array(2, $blaetter))
$return.='<td><a href="'.$url.$get_site.'=1">1</a></td>
<td>...</td>';
else
$return.='<td><a href="'.$url.$get_site.'=1">1</a></td>';
}
foreach($blaetter AS $blatt)
{
if ($blatt == $seite)
$return.='<td>['.$blatt.']</td>';
else
$return.='<td><a href="'.$url.$get_site.'='.$blatt.'">'.$blatt.'</a></td>';
}
if (!in_array($maxseite, $blaetter) AND count($blaetter) > 1)
{
if (!in_array(($maxseite - 1), $blaetter))
$return.='<td>...</td>
<td><a href="'.$url.$get_site.'='.$maxseite.'">'.$maxseite.'</a></td>';
else
$return.='<td><a href="'.$url.$get_site.'='.$maxseite.'">'.$maxseite.'</a></td>';
}
if(empty($return))
return "";
else
return $return;
}
?>
Seitenausgabe gehört in den Inhaltsbereich
<?php
echo'<table><tr>';
if ($seite != 1)
{
echo'<td><a href="foo.php?seite='.($seite - 1).'"> < </a></td>';
}
echo blaettern($seite, $seiten);
if ($seite != $seiten)
{
echo'<td><a href="foo.php?seite='.($seite + 1).'"> > </a></td>';
}
echo'</tr></table>';
?>
Eignet sich für hunderte von Seitenaufteilungen.
Verkürzte Darstellung: ohne Formatierung, kann etwa so aussehen: