PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP für Fortgeschrittene und Experten (http://www.selfphp.de/forum/forumdisplay.php?f=13)
-   -   Dynamische Navigation (Fehlersuche) (http://www.selfphp.de/forum/showthread.php?t=14704)

timo88 29.09.2006 18:24:35

Dynamische Navigation (Fehlersuche)
 
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>&nbsp;&nbsp;';
        
$string .= '<a href="?site='.($seiteaktuell-1).$extvariables.'"><img src="../../bilder/btn_rewind.gif" width="9" height="7" border="0"> Zur&uuml;ck</a>&nbsp;&nbsp;&nbsp;&nbsp;';
        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>&& $x<$seiteaktuell) || ($x>$seiteaktuell && $x<$sitescomplete)) && (($x!=$seiteaktuell $navceil) && $x<$sitescomplete))
            
$string .= '<a href="?site='.$x.$extvariables.'">'.$x.'</a>&nbsp;|&nbsp;';        
    
// Die Seitenzahl der aktuellen Seite nicht verlinken
        
if($x==$seiteaktuell){
            @
$string .= $x;
        if(
$seiteaktuell!=$sitescomplete)
            
$string .= '&nbsp;|&nbsp;';}
    
// 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>&nbsp;&nbsp;&nbsp;&nbsp;';
    }    
    
// 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>&nbsp;&nbsp;';
        
$string .= '<a href="?site='.$sitescomplete.$extvariables.'">Ende <img src="../../bilder/btn_end.gif" width="11" height="7" border="0"></a>&nbsp;&nbsp;';
    }
    return 
$string;


Kann mir jemadn weiterhelfen? Ich hab mir jetzt schon Stunden lang den Kopf zerbrochen, finde den Fehler aber nicht.
Gruß Timo

timo88 29.09.2006 19:10:31

AW: Dynamische Navigation (Fehlersuche)
 
Ich merke grad, dass der "Weiter-" und "Ende-Link" irgendwie auch immer erscheint. Aber warum? Ich hab grad nochmal über alles drübergeguckt und finde keinen Fehler. Die DB-Abfrage findet auf jeden Falll korrekt statt.

timo88 01.10.2006 15:51:56

AW: Dynamische Navigation (Fehlersuche)
 
Kann mir niemand helfen? Ich wär echt sehr dankbar, wenn sich jemand mit dem Problem befassen würde. Ich hab wirklich schon Stunden davor gesessen und den Fehler gesucht ich kann aber nix finden. :-(

Nochmal eine Ansicht der gesamten Seite, wenn die letzte Seite ausgewählt ist:
http://www.timoh.g4.gs/letzte_seite.jpg

timo88 01.10.2006 17:43:08

AW: Dynamische Navigation (Fehlersuche)
 
HAT SICH ERLEDIGT... HABE DEN FEHLER GEFUNDEN


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:37:37 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.