pdo statements
Einfache Pagination
Seitennummerierung:
Daten aus DatenBank auf mehrere Seiten verteilen, wie geht das?
Beispiel: 30 Einträge in der Datenbank verteilt auf 10 Seiten.
Hier ein ganz einfaches Beispiel:
<?php
Einträge per Seite / variabel
$pagseite= 3;
1x Seitennamen ändern wenn sie nicht foo.php heißt!
$pagsite="foo.php";
$getsite="?seite";
Variablen bestimmen
$leiste=isset($_GET['leiste']) ? $_GET['leiste'] : '';
if (isset($_GET['seite']) ? $_GET['seite'] : '')
{
$seite=isset($_GET['seite']) ? $_GET['seite'] : '';
}
else
{
$seite=1;
}
$start=($seite - 1) * $pagseite;
Entsprechende Datenbank Verbindung einfügen
Datenbank abfrage
$stmt=$msql->prepare("SELECT spalte1,spalte2 FROM a_table LIMIT ?, ?");
$stmt->bind_param('ii',$start,$pagseite);
$stmt->execute();
$result=$stmt->get_result();
Daten ausgabe
while ($row=$result->fetch_assoc())
{
echo $row['spalte1'];
echo $row['spalte2'];
}
oder gleich als Variablen ausgeben
$stmt=$msql->prepare("SELECT spalte1,spalte2 FROM a_table LIMIT ?,?");
$stmt->bind_param('ii',$start,$pagseite);
$stmt->bind_result($spalte1,$spalte2);
$stmt->execute();
Daten ausgabe
while($stmt->fetch())
{
echo $spalte1;
echo $spalte2;
}
$stmt=$pdo->prepare("SELECT spalte1, spalte2 FROM a_table LIMIT :start, :pagseite");
$stmt->bindParam(':start',$start,PDO::PARAM_INT);
$stmt->bindParam(':pagseite',$pagseite,PDO::PARAM_INT);
$stmt->execute();
Daten ausgabe
while ($row=$stmt->fetch())
{
echo $row['spalte1'];
echo $row['spalte2'];
}
oder gleich als Variablen ausgeben
$stmt=$pdo->prepare("SELECT spalte1, spalte2 FROM a_table LIMIT :start, :pagseite");
$stmt->bindParam(':start',$start,PDO::PARAM_INT);
$stmt->bindParam(':pagseite',$pagseite,PDO::PARAM_INT);
$stmt->bindColumn(1,$spalte1);
$stmt->bindColumn(2,$spalte2);
$stmt->execute();
Daten ausgabe
while ($stmt->fetch())
{
echo $spalte1;
echo $spalte2;
}
Einträge zählen
$stmt=$msql->prepare("SELECT COUNT(*) id FROM a_table");
$stmt->execute();
$result=$stmt->get_result();
$row=$result->fetch_assoc();
$number=$row['id'];
$seiten=ceil($number/$pagseite);
$stmt=$pdo->prepare("SELECT id FROM a_table");
$stmt->execute();
$number=$stmt->rowCount();
$seiten=ceil($number/$pagseite);
Objekt schließen einfügen
Verbindung beenden einfügen
Seitenaufteilung
if ($seiten > 1)
{
for ($i=1;$i <= $seiten;$i++)
{
if ($i == $seite)
{
$leiste.='<td class="currentpage">
'.$i.'
</td>';
}
else
{
$leiste.='<td>
<a href="'.$pagsite.$getsite.'='.$i.'">'.$i.'</a>
</td>'; }
}
}
Seitenausgabe gehört in den Inhaltsbereich
echo'<table><tr>';
if($seite != 1)
{
echo'<td>
<a href="'.$pagsite.$getsite.'='.($seite - 1).'"> < </a>
</td>';
}
echo $leiste;
if($seite != $seiten)
{
echo'<td>
<a href="'.$pagsite.$getsite.'='.($seite + 1).'"> > </a>
</td>';
}
echo'</tr></table>';
?>
Eignet sich für etwa 2 bis ca. 15 Seitenaufteilungen, bei mehr als 15 Seitenaufteilungen könnte es Optische Probleme bei kleinen Auflösungen (Smartphone..) geben.
Verkürzte Darstellung: ohne Formatierung,
kann etwa so aussehen:
Top
Top