Seitennavigation

Arndtinho

Erfahrenes Mitglied
Hallo,

ich weis, dieses Thema wurde schon 'zigmal behandelt.
Meine Versuche eine Seitennavigation (Blätterfunktion) zu erstellen schlugen bis jetzt immer fehl und ich weis nicht was ich falsch mache. Nach Lesen von Tutorials und Codeschnippseln sieht es bei mir wie folgt aus:

PHP:
// DB-Definition
// DB-Connect
// Anzahl der Datensätze in DB

// benötigten Seiten
$limit = 2;					
$pages = ceil($anz/$limit);

// Limit-Werte
$page = 0;
$start = $page * $limit;
$ende = $start + $limit;
echo "Startwert: ".$start."<br>";
echo "Endwert: ".$ende;
if($ende > $anz) {
	$ende = $anz;
}

// Abfrage der Datensätze
$sql = "SELECT * FROM ".$table." LIMIT ".$start.", ".$limit;
$res = mysql_query($sql, $con);
while($row = mysql_fetch_row($res)) {
	echo $row[2]." - ".$row[3]."<br>";
}

// blättern
if ($page > 0) { 
    $i = $page - 1; 
    echo "<a href=\"blaettern.php?page=".$i."\">previous</a>"; 
}

for($i=1; $i<=$pages; $i++) {
	echo "<a href=\"blaettern.php?page=".$i."\">".$i."</a>&nbsp;|&nbsp;";
}

if ($page < $pages) { 
    $i = $page + 1; 
    echo "<a href=\"blaettern.php?page=".$i."\">next</a>"; 
}

Es werde 2 Datensätze angezeigt, sollen ja auch. Auch die Seitenanzahl wird richtig berechnet. Die "Seitenzahlen"-Links für das Blättern werden auch richtig angezeigt. Nur das Blättern funkioniert nicht.Was mache ich verkehrt?

Gruß Arndtinho
 
Es wird per GET der Parameter "page" übergeben. Allerdings setzt Du $page beim Scriptaufruf Standardmäßig auf 0. Das sollte als erstes geändert werden. Ausserdem solltest Du statt $page $_GET['page'] verwenden.

snuu
 
Zuletzt bearbeitet:
Re:

Hallo,

danke, habe es jetzt umgeändert. Funktioniert schon besser als vorhin. Auch das 'Blättern' passt. Es passiert aber etwas seltsames: Ich habe 5 Einträge in der Datenbank. Es sollen 2 Datensätze pro Seite angezeigt werden -> es werden also 3 Seiten benötigt. Auf der 1.Seite werden die ersten beiden DS angezeigt. Auf der 2. der vierte und fünfte und die 3.Seite bleibt leer.

PHP:
if (empty($_GET['page'])) { 
	$_GET['page'] = 1; 
} 

$start = $pages*($_GET['page']-1);
$sql = "SELECT * FROM ".$table." LIMIT ".$start.", ".$limit;
$ergebnis = mysql_query($sql, $con);

while($row = mysql_fetch_row($ergebnis)) {
echo $row[2]." - ".$row[3]."<br>";
}
if ($_GET['page'] > 1) { 
$back = $_GET['page']-1; 
echo "<a href=\"blaettern5.php?page=".$back."\">back&nbsp;|&nbsp;</a>"; 
}
for ($i = 1; $i < $pages+1; $i++) { 
echo " <a href=\"blaettern5.php?page=".$i."\">".$i."</a>&nbsp;|&nbsp;"; 
}
if ($_GET['page'] < $pages) { 
$forward = $_GET['page']+1; 
echo " <a href=\"blaettern5.php?page=".$forward."\">next</a>"; 
}


Wo ist der dritte DS der DB abgeblieben?

Gruß Arndtinho
 
Re:

Hi,

habe es hinbekommen.

PHP:
// alt

$start = $pages*($_GET['page']-1);


//neu

$start = $limit*($_GET['page']-1);

Gruß Arndtinho
 
Zurück