Hi, ich hab auf meiner HP die dynamische Navigation aus dem SELFPHP-Kochbuch eingebaut. Dort wird eine DB-Abfrage auf mehrere Seiten verteilt. Diese hab ich ein bisschen bearbeitet und das Layout ein wenig verändert. Nur irgendwie hab ich jetzt das Problem, dass es ein Problem gibt wenn ich die letzte Seite aufrufe. es gibt keine Fehlermeldung oder so. Die Darstellung ist einfach nicht so wie ich sie will.
Die aktuelle Seite soll nicht verlinkt dargestellt werden. Das funktioniert immer, nur wenn ich die letzte Seite aufrufe geht es nicht. Dann wird die vorletzte Seite unverlinkt dargestellt und die letzte verlinkt.
Hier ein Beispiel:
- aktuelle Seite
$seiteaktuell: 13
- Seiten maximal
$sitescomplete: 13
So wird die Navigationsleiste dann aufgebaut:
www.timoh.g4.gs/navi.jpg
PHP-Code:
// Ermittelt die Gesamtzahl der Datensätze
$result = $db->query("SELECT COUNT(*) FROM xxx WHERE xxx;");
while (list($menge) = $result->fetch_row())
{
$eintraege=$menge;
}
$result->close();
/* Parameter dynamische Seitennavigation */
$max_eintraege = @$_GET["show"] + 0; // Anzahl der abgefragten Einträge u. Konvertierung zu INT
if (empty($max_eintraege)) $max_eintraege = 10; // Falls kein Wert ausgewählt wurde, wird er auf 10 gesetzt
define ("NAV_LEISTE",9); // Konstante: Menge der Seitenzahlen in der Navigationsleiste
$seiteaktuell = @$_GET['site'] + 0; // Die aktuell angeforderte Seite
$sitescomplete = ceil($eintraege / $max_eintraege); // Errechnet die kompletten Seiten
if(empty($seiteaktuell)) $seiteaktuell = 1; // Falls noch keine Seitenzahl übergeben wurde, wird der Wert auf die erste Seite gesetzt
$start=$seiteaktuell * $max_eintraege - $max_eintraege; // Berechnet die nächsten Einträge aus $max_eintraege
if($seiteaktuell<$sitescomplete)$js_auswahl=$max_eintraege;// Berechnung der Auswahlmenge im Multi-JS
else $js_auswahl=$eintraege-(--$seiteaktuell)*$max_eintraege;
if(@$_GET["show"]) $extvariables="&show=".$max_eintraege; // Weitere Variablen z.B. $max_eintraege
function navigationsleiste($sitescomplete,$seiteaktuell,$extvariables)
{
// Die Menge der angezeigten Links für die Seiten werden errechnet
$navceil = floor(NAV_LEISTE / 2);
// Eine Seite zurück oder zum Anfang nur anzeigen, wenn mindestens eine Seite zurück geblättert werden kann
if($seiteaktuell > 1){
$string = '<a href="?site=1'.$extvariables.'"><img src="../../bilder/btn_start.gif" width="11" height="7" border="0"> Anfang</a> ';
$string .= '<a href="?site='.($seiteaktuell-1).$extvariables.'"><img src="../../bilder/btn_rewind.gif" width="9" height="7" border="0"> Zurück</a> ';
if($seiteaktuell-$navceil>1) $string .= " ... ";
}
// Baut die Seitennavigation auf (1 2 3 4 5 6 ... n)
for($x = $seiteaktuell - $navceil; $x<=$seiteaktuell+$navceil; $x++)
{
// Alle Seitenzahlen vor und nach der aktuellen Seite verlinken
if((($x>0 && $x<$seiteaktuell) || ($x>$seiteaktuell && $x<$sitescomplete)) && (($x!=$seiteaktuell + $navceil) && $x<$sitescomplete))
$string .= '<a href="?site='.$x.$extvariables.'">'.$x.'</a> | ';
// Die Seitenzahl der aktuellen Seite nicht verlinken
if($x==$seiteaktuell){
@$string .= $x;
if($seiteaktuell!=$sitescomplete)
$string .= ' | ';}
// Die letzte Seitenzahl der Navigationsleiste ohne Trennzeichen
if((($x==$seiteaktuell + $navceil) && $x<=$sitescomplete) || ($x==$sitescomplete && $seiteaktuell<$sitescomplete))
$string .= '<a href="?site='.$x.$extvariables.'">'.$x.'</a> ';
}
// Eine Seite vor oder zum Ende nur anzeigen, wenn mindestens eine Seite weiter geblättert werden kann
if($seiteaktuell < $sitescomplete){
$string .= '<a href="?site='.($seiteaktuell+1).$extvariables.'">Weiter <img src="../../bilder/btn_forward.gif" width="9" height="7" border="0"></a> ';
$string .= '<a href="?site='.$sitescomplete.$extvariables.'">Ende <img src="../../bilder/btn_end.gif" width="11" height="7" border="0"></a> ';
}
return $string;
}
Kann mir jemadn weiterhelfen? Ich hab mir jetzt schon Stunden lang den Kopf zerbrochen, finde den Fehler aber nicht.
Gruß Timo