Hi PHPler,
ich habe mich mal an einer Klasse für mein Seitenlayout probiert und hänge an der Funktion, die eigentlich die Navigation aufbauen soll.
Sie sieht folgendermaßen aus:
Meine Datenbankstruktur:
wobei id automatisch vergeben wird, treeid die ID der Navigation ist. Also alles was unter treeid 1 stehen hat (Standard) gehört zur ersten Navigation. parentid ist die ID des übergeordneten Menüpunktes, name gibt den Text des Links an und url ist der Name der Datei (also z. B. impressum.php).
Folgender Fehler tritt auf:
Die Unterpunkte werden von allen Menüs angezeigt.
Mein Ziel:
Es sollen nur die Unterpunkte der ausgewählten Kategorie angezeigt werden und es soll auch in tiefere Ebenen funktionieren. Meins würde nämlich nur bis in die 2te Ebene funktionieren...
Ich bin mir ziemlich sicher, dass mein ganzer Ansatz nicht wirklich richtig ist.
Hoffe jemand von euch blickt da durch und kann mir weiterhelfen.
SilentSight
ich habe mich mal an einer Klasse für mein Seitenlayout probiert und hänge an der Funktion, die eigentlich die Navigation aufbauen soll.
Sie sieht folgendermaßen aus:
PHP-Code:
function writeNav($tid = 1) {
$active = basename($_SERVER['PHP_SELF']);
$nav_sel = new sqlQuery('SELECT * FROM navigation WHERE treeid="'.$tid.'" OR treeid IS NULL');
echo '<div id="navigation">';
echo '<div class="tree">';
// Gibt alle Navigationsbäume aus
while($nav = $nav_sel->fetch()) {
if(is_null($nav['treeid'])) {
echo '<h2>'.$nav['name'].'</h2>';
}
if(!is_null($nav['treeid'])) {
// Gibt alle Eltern-Elemente aus
if(is_null($nav['parentid'])) {
echo '<a href="'.$nav['url'].'" id="nav_'.(($active == $nav['url']) ? 'active' : $nav['id']).'">'.$nav['name'].'</a>';
} else {
$parent_sel = new sqlQuery('SELECT url FROM navigation WHERE id="'.$nav['id'].'" LIMIT 1');
$parent = $parent_sel->fetch();
// Gibt alle Kind-Elemente aus
if($nav['url'] == $active || $parent['url'] == $nav['url']) {
echo '<a href="'.$nav['url'].'" '.(($nav['url'] == $active) ? 'id="subnav_active"' : '').' class="subnav">'.$nav['name'].'</a>';
}
}
}
}
echo '</div>';
echo '</div>';
}
Code:
id | parentid | treeid | name | url
Folgender Fehler tritt auf:
Die Unterpunkte werden von allen Menüs angezeigt.
Mein Ziel:
Es sollen nur die Unterpunkte der ausgewählten Kategorie angezeigt werden und es soll auch in tiefere Ebenen funktionieren. Meins würde nämlich nur bis in die 2te Ebene funktionieren...
Ich bin mir ziemlich sicher, dass mein ganzer Ansatz nicht wirklich richtig ist.
Hoffe jemand von euch blickt da durch und kann mir weiterhelfen.
SilentSight
Kommentar