Ankündigung

Einklappen
Keine Ankündigung bisher.

Navigationsscript - Unterseiten zur aktuellen Seite

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Navigationsscript - Unterseiten zur aktuellen Seite

    Hallo zusammen,

    Einige kennen vielleicht schon mein [URL=http://www.homepage-forum.de/showthread.php?t=33489]Navigationsscript[URL].
    Dieses Script liest alle Seiten aus einer Datenbank aus und gibt sie dann aus. Es gibt eine oberste ebene, eine zweite ebene usw. Name ist logischerweise der Name der Seite, id die id der seite, top id ist die id der übergeordneten seite und history ist die ebene auf der sich die Seite befindet (1 = zuoberst, 2 = zweitoberst usw.).
    Die Datenbankstruktur sieht in etwa so aus:
    Code:
    Name       || ID || top_id || history(ebene)
    =================================
    Startseite || 1  || -1       || 1
    Sub1        || 2  || 1        || 2
    Sub1A      || 3  || 2        || 3
    Sub1A 2   || 4   || 2       || 3
    Top         || 5   || -1      || 1
    Mein Script sieht so aus(die Kommentare dürften alles erklären):
    (Das Script steht unter folgender Lizenz: http://creativecommons.org/licenses/...eiz%20Lizenz/)
    PHP-Code:
    <div class="navigation">
    <ul class="navigationitems">
    <?php
    $naviqd 
    'SELECT * FROM `blophoweso_navi` ORDER BY `history`'/* Verbindung */
    $naviquery mysql_query($naviqd); /* Query */
    $tago 0/* Wiviele Tags sind geöffnet(...und müssen anschliessend wieder geschlossen werden). */

    while($navi mysql_fetch_object($naviquery)) {
    if(
    $navi->history == 1) { /* Erste ebene ganz normal ausgeben. */
    echo '<li><a href="index.php?api='.$navi->id.'" title="'.$navi->title_alternative.'">'.$navi->title.'</a></li>';
    } else {
    if(isset(
    $oldhis)) { /* Wenn eine Variable mit der angabe über die Ebene des vorherigen durchlaufs existiert. */
    if(($navi->history <= $oldhis)) { /* Wenn die Ebene  immer noch die selbe ist. */
    if(($navi->top_id <= $api) OR ($navi->id == $api)) { /* PROBLEMSTELLE: Wenn die top id/die id der Seite kleiner oder gleich die aktuelle Seite ist. */
    echo '<li><a href="index.php?api='.$navi->id.'" title="'.$navi->title_alternative.'">'.$navi->title.'</a></li>'/* Ja: ausgabe auf der selben ebene. */
    }
    } else { 
    /* Das ganze entspricht nicht mehr der aktuellen ebene. */
    if(($navi->top_id <= $api) OR ($navi->top_id == $api)) {
    $tago++; /* Ein Tag mehr muss geöffnet werden(neue ebene). */
    $oldhis++; /* Der Ebenenwert wird hochgeschraubt.
    echo '<li><ul>'; /* Tags ausgeben. */
    echo '<li><a href="index.php?api='.$navi->id.'" title="'.$navi->title_alternative.'">'.$navi->title.'</a></li>';
    }
    }
    } else {
    if((
    $navi->top_id <= $api) OR ($navi->id == $api)) {
    $tago++; /* Die Variable oldhis existiert nicht(= erster durchlauf). */
    $oldhis $navi->history/* Variable definieren. */
    echo '<li><ul>'/* Tags ausgeben. */
    echo '<li><a href="index.php?api='.$navi->id.'" title="'.$navi->title_alternative.'">'.$navi->title.'</a></li>';
    }
    }
    }
    $ownid++;
    }
    if(isset(
    $oldhis)) {
    $i 1;
    while(
    $i <= $tago) { /* Tags wieder schliessen. */
    echo '</ul></li>';
    $i++;
    }
    }
    ?> 
    </ul>
    </div>
    Nun habe ich aber ein Problem. Dieses liegt bei den if abfragen die checken ob die Seite denn auch eine unterseite der aktuellen Seite ist. Ich möchte gerne alle vorherigen Seiten ausgeben + eine ebene vorwärts(also so etwas wie eine "Du bist hier: " anzeige). Darum überpfüe ich ob der Wert kleiner oder gleich die aktuelle ID der aktuellen seite ist. Da es aber auch Seiten gibt die eine höhere ID als die aktuelle haben, aber in der ebene weiter oben wären, werden diese nicht angezeigt(bei meiner beispieldatenbank das Item "Top").

    Ich bin sehr ratlos. Hat jemand eine Idee wie man das lösen könnte?

    Ich währe ab jeder Antwort extrem Dankbar!!!

    MFG
    [ASTERIX]

  • #2
    AW: Navigationsscript - Unterseiten zur aktuellen Seite

    erstmal >

    aus unübersichtlich macht übersichtlich:

    PHP-Code:
    while($navi mysql_fetch_object($naviquery))
    {
        if(
    $navi->history == 1)
        {
            
    /* Erste ebene ganz normal ausgeben. */
            
    echo '<li><a href="index.php?api='.$navi->id.'" title="'.$navi->title_alternative.'">'.$navi->title.'</a></li>';
        }
        else 
        {
            if(isset(
    $oldhis)) 
            {
                
    /* Wenn eine Variable mit der angabe über die Ebene des vorherigen durchlaufs existiert. */
                
    if(($navi->history <= $oldhis)) 
                {
                    
    /* Wenn die Ebene  immer noch die selbe ist. */
                    
    if(($navi->top_id <= $api) OR ($navi->id == $api))
                    {
                        
    /* PROBLEMSTELLE: Wenn die top id/die id der Seite kleiner oder gleich die aktuelle Seite ist. */
                        
    echo '<li><a href="index.php?api='.$navi->id.'" title="'.$navi->title_alternative.'">'.$navi->title.'</a></li>'/* Ja: ausgabe auf der selben ebene. */
                    
    }
                } 
                else
                {
                    
    /* Das ganze entspricht nicht mehr der aktuellen ebene. */
                    
    if(($navi->top_id <= $api) OR ($navi->top_id == $api))
                    {
                        
    $tago++;         /* Ein Tag mehr muss geöffnet werden(neue ebene). */
                        
    $oldhis++;         /* Der Ebenenwert wird hochgeschraubt.
                        echo '<li><ul>';     /* Tags ausgeben. */
                        
    echo '<li><a href="index.php?api='.$navi->id.'" title="'.$navi->title_alternative.'">'.$navi->title.'</a></li>';
                    }
                }
            }
            else
            {
                if((
    $navi->top_id <= $api) OR ($navi->id == $api))
                {
                    
    $tago++;             /* Die Variable oldhis existiert nicht(= erster durchlauf). */
                    
    $oldhis $navi->history;     /* Variable definieren. */
                    
    echo '<li><ul>';         /* Tags ausgeben. */
                    
    echo '<li><a href="index.php?api='.$navi->id.'" title="'.$navi->title_alternative.'">'.$navi->title.'</a></li>';
                }
            }
        }
        
    $ownid++;
    }

    if(isset(
    $oldhis))
    {
        
    $i 1;
        while(
    $i <= $tago)
        {
            
    /* Tags wieder schliessen. */
            
    echo '</ul></li>';
            
    $i++;
        }

    muss ich mir mal ankucken, wenn ich mehr zeit hab....
    AC/DC Fanpage www.ifyouwantblood.de
    Nein zur Zensur im Internet und anderswo - Anonymous

    Kommentar


    • #3
      AW: Navigationsscript - Unterseiten zur aktuellen Seite

      Hallo,

      Danke! Hat sonst niemand Ideen?

      MFG
      [ASTERIX]

      Kommentar

      homepage-forum.de - Hilfe für Webmaster! Statistiken

      Einklappen

      Themen: 57.203   Beiträge: 432.036   Mitglieder: 29.639   Aktive Mitglieder: 29
      Willkommen an unser neuestes Mitglied, Shalin.

      Online-Benutzer

      Einklappen

      814 Benutzer sind jetzt online. Registrierte Benutzer: 1, Gäste: 813.

      Mit 9.939 Benutzern waren am 17.05.2023 um 21:38 die meisten Benutzer gleichzeitig online.

      Die neuesten Themen

      Einklappen

      Die neuesten Beiträge

      Einklappen

      Lädt...
      X