Hallo Zusammen.
Ich werde noch Wahnsinnig. Seit einigen Tagen bin ich dran in meine Ergebnisliste eine Blätternavigation einzubauen. Die erste Seite wird auch richtig angezeigt, nur - sobald ich auf den Links mit 2, 3, 4 usw. klicke - kommt eine leere Seite und es werden keine weiteren Daten angezeigt (obwohl vorhanden). OHNE die Blätternavigation sind die Ausgabedaten korrekt.
Vielleicht hab ich auch nur eine Klammer an der falschen Stelle gesetzt oder es ist nur eine Kleinigkeit. Ich blicke nunmehr nicht mehr durch.
Hier der Code (aufs nötigste abgespeckt):
PHP
// In $result ist die per Suchformular gefilterte Ergebnismenge
...
...
$result = mysql_query($query);
$menge = mysql_num_rows ($result);
$datensaetze_pro_seite = "3"; // Anzahl der Datensaetze die Pro Seite angezeigt werden sollen
$p = "5"; // Anzahl der Links die in der Seitenavigation ausgegeben werden
$total = $menge; // liefert die Anzahl der Datensaetze der Abfrage
$seiten = ceil($total / $datensaetze_pro_seite);// Berechnet die Seitenanzahl insgesamt
if(empty($_GET['go'])){ // korrigieren der aktuellen Seite
$go = 1; // Sofern $go nicht uebergeben wurde
}elseif($_GET['go'] <= 0 || $_GET['go'] > $seiten){
$go = 1; // Variable definieren
}else{ // Wenn Obriges nicht zutraf
$go = mysql_real_escape_string($_GET['go']);// Variable definieren
}
$links = array(); // Linkkette bilden
// Seite die vor der aktuellen Seite kommt definieren
if(($go - $p) < 1){ $davor = $go - 1; }else { $davor = $p; }
// Seite die nach der aktuellen Seite kommt definieren
if(($go + $p) > $seiten){ $danach = $seiten - $go; }else{ $danach = $p; }
$off = ($go - $davor); // Variable definieren
if ($go- $davor > 1){ // Link definieren => Zur Erste Seite springen
$first = 1;
$links[] = "<a href=\"$pfad?go=$first\" title=\"Zur ersten Seite springen\">« Erste ...</a>\n";
}
if($go != 1){ // Link definieren => eine Seite zurueck blaettern
$prev = $go-1;
$links[] = "<a href=\"$pfad?go=$prev\" title=\"Eine Seite zurueck blaettern\"> «</a>\n";
}
for($i = $off; $i <= ($go + $danach); $i++){ // einzelne Seitenlinks erzeugen
if ($i != $go){ // Link definieren
$links[] = "<a href=\"$pfad?go=$i\">$i</a>\n";
}elseif($i == $seiten) { // aktuelle Seite, ein Link ist nicht erforderlich
$links[] = "<span class=\"current\">[ $i ]</span>\n";
}elseif($i == $go){ // aktuelle Seite, ein Link ist nicht erforderlich
$links[] = "<span class=\"current\">[ $i ]</span>\n";
} // close if $i
}
if($go != $seiten){ // Link definieren => eine Seite weiter blaettern
$next = $go+1;
$links[] = "<a href=\"$pfad?go=$next\" title=\"Eine Seite weiter blaettern\"> » </a>\n";
}
if($seiten - $go - $p > 0 ){ // Link definieren => Zur letzen Seite springen
$last = $seiten;
$links[] = "<a href=\"$pfad?go=$last\" title=\"Zur letzten Seite springen\">... Letzte »</a>\n";
}
$start = ($go-1) * $datensaetze_pro_seite; // Berechne den Startwert fuer die DB
$link_string = implode(" ", $links); // Zusammenfuegen der einzelnen Links zu einem String
$abfrage = mysql_query($query . " LIMIT $start,$datensaetze_pro_seite ");
// Daten ausgeben
while($row = mysql_fetch_object($abfrage))
{
echo $row->id;
echo $row->artikel;
}
// -------------------------------------- Seitennavigation ausgeben ----------------------------
echo "<div id=\"navigation\">\n";
echo "<span class=\"pages\">Seite ".$go." von ".$seiten."</span>\n";
echo $link_string;
echo "</div> \n";
// -------------------------------------- Seitennavigation ende --------------------------------
}
Alles anzeigen
Schon jetzt vielen Dank für jeden Tip!