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