Ich bin grade dabei eine Art Blätternavigation / Seitennavigation oder wie man das ganze auch nennen mag zu erstellen aber ich kriege das mit dem aufteilen der Daten auf mehrere Seiten nicht hin.Konkret dabei die Anzeige der Seiten und die Weiterleitung dahin. So sieht das ganze derzeit aus:
$entrysAPage = 5;
$site = isset($_GET["page"]) ? mysql_real_escape_string($_GET["page"]) : 1;
$start = $site * $entrysAPage - $entrysAPage; // get first row
try
{
$query = $dbz->query("SELECT * FROM guestbook WHERE aktiv = '1' ORDER BY id DESC LIMIT $start, $entrysAPage");
$entryAmmount = $dbz->query("SELECT id FROM guestbook WHERE aktiv = '1'")->fetchColumn();
if($entryAmmount > 0)
{
$entries = $query->fetchAll();
foreach($entries as $entry)
{
echo $entry['name'];
}
$smarty->assign('daten', $entries);
}
else
$smarty->assign('entryAmmount', $entryAmmount);
}
catch(PDOException $e)
{
echo '<p>Es ist ein Fehler aufgetreten!</p>' . $e;
}
$allPages = $entryAmmount / $entrysAPage; // How many pages exist?
$smarty->display('templates/guestbook.tpl');
echo "<b>Seite:</b> ";
for($i = 0; $i < $allPages; $i++)
{
$page = $i + 1;
if($site == $page) // If user is on that page, print no link
{
echo " $page ";
}
else // If user is not on that page, create link
{
echo " <a href="?page=$page">$page</a> ";
}
}
Alles anzeigen
Es existieren derzeit schon so knapp 10 Testeinträge aber es werden nur 5 Einträge angezeigt und die Anzahl der Seiten beläuft sich auch nur auf 1, obwohl es ja jetzt eigentlich 2 sein müssten? Es wird nur ausgegeben Seite: 1 und mehr nicht. Zudem ist oben in der url aber auch keine seite (page) zu sehen, müsste die nicht auch gesetzt sein?
Aktiv steht dafür, das der Eintrag ebend aktiv oder nicht ist, weil ich es von vornherein mit einbauen wollte, das der Admin Einträge deaktvieren kann oder dergleichen.
Das mit der Anzahl der Seiten hat sich jetzt erledigt, das war ein kleiner Fehler der Query, allerdings fehlt mir noch etwas ..
So müsste das ganze nämlich aussehen:
$query = $dbz->query("SELECT * FROM guestbook WHERE aktiv = '1' ORDER BY id DESC LIMIT $start, $entrysAPage");
$entryAmmount = $dbz->query("SELECT COUNT(id) FROM guestbook WHERE aktiv = '1'")->fetchColumn();
Jetzt wird auch die richtige Anzahl der Einträge ausgegeben und die Seiten wie gesagt auch, allerdings benutze ich ja auch $_GET um zwischen den Seiten zu wechseln und um ungültige Links direkt auf die Indexseite zu leiten aber wie kriege ich die page da jetzt rein? Sonst habe ich nichts verändert.
So sieht die index.php aus:
$site = isset($_GET['site']) ? $_GET['site'] : '';
switch($site)
{
case 'guestbook':
if(isset($_GET['page']))
$site = 'guestbook?' . $_GET['page'];
include('Frontend/gaestebuch.php');
break;
default:
include('Frontend/index.php');
break;
}
Alles anzeigen
und so dann der link zum gästebuch:
Wenn ich dann jetzt aber auf Seite 2 klicke, dann komme ich auf die index.php. Oben in der Adresszeile steht dann:
IP/testseite/index.php?page=2 aber ich will ja auf dem Gästebuch bleiben aber dann natürlich mit der "page".
Sollte das dann oben mit dem $_GET so nicht passen ... ?