Hallo,
ich möchte gerne meine Navigationsleiste dynamisch aus der Datenbank erzeugen, da sich die Website noch in der Anfangsphase befindet und somit ständig Änderungen an dem Navigationsbaum entstehen finde ich es sehr lästig, ständig neue Grafikdateien zu erstellen, diese in alle Navigationsdateien einzufügen etc.
Es muss doch möglich sein dies dynamisch zu generieren. Dabei soll es zwei Ebenen geben. Wenn die oberste Ebene angeklickt wird, öffnet sich die darunterliegende. Wird eine andere Überschrift angeklickt, schließt diese sich wieder und die andere Unterebene öffnet sich...
Außerdem soll irgendwann mal ein Benutzer-Login integriert werden. Benutzer sollen dann verschiedene Menüpunkte in der Navigationsleiste sehen können, je nach Rechten. Dafür wäre es ebenfalls sinnvoll das Ganze von Anfang an aus der Datenbank aufzubauen.
Meine Frage jetzt, wie sollten die Tabellen aussehen
Mein Vorschlag:
Tabelle 1:
Menue_ID, Menuepunkt, Position, URL, Status (0 für passiv, 1 für aktiv),
Tabelle 2:
Untermenue_ID, Menue_ID (zu welchem Obermenue gehoert der Unterpunkt), Position, URL, Status
Hab ich irgendwas vergessen?
Frage 2: Bin ich auf dem "richtigen" Weg? Oder gibt es einfachere Möglichkeiten eine dynamische Navigation zu erstellen?
Vielen Dank!
Ankündigung
Einklappen
Keine Ankündigung bisher.
Navigationsleiste mit Datenbank erstellen
Einklappen
Neue Werbung 2019
Einklappen
X
-
Navigationsleiste mit Datenbank erstellen
Stichworte: -
-
Ein Gast antworteteAlso das ist meine Datei "navigation.php":
Code:<html> <head> <title>Navigationsleiste</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link rel="stylesheet" type="text/css" href="/css/navigation.css"> <script language="JavaScript"> function MM_goToURL() { var i, args=MM_goToURL.arguments; document.MM_returnValue = false; for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'"); } </script> </head> <body> <?php ... db_connect () or exit (); $result = mysql_query('SELECT * FROM navNodes WHERE status = '1' AND ebene = '1' ORDER BY position ASC'); while($row = mysql_fetch_array($result)) { if $row['id'] != $_GET['id'] { echo ('<tr><td>'); echo ('<form action="navigation.php" method="get"> <a href=navigation.php?id='.$row['id'].' target="leftFrame" onMouseDown="MM_goToURL(\'parent.frames[\'mainFrame\']\'' ,.$row['url'].');return document.MM_returnValue">' .$row['name']. '</a></form>'); echo ('</td></tr>'); } else { echo ('<tr><td>'); echo ('<form action="navigation.php" method="get"> <a href=navigation.php?id='.$row['id'].' target="leftFrame" onMouseDown="MM_goToURL(\'parent.frames[\'mainFrame\']\'' ,.$row['url'].');return document.MM_returnValue">' .$row['name']. '</a></form>'); echo ('</td></tr>'); $result2 = mysql_query('SELECT * FROM navNodes INNER JOIN ... WHERE status = '1' AND ebene = '2' ORDER BY position ASC'); while($row2 = mysql_fetch_array($result2)) { echo ('<tr><td>'); echo ('<a href=\"'.$row2['url'].'\">'.$row2['name'].'</a>'); echo ('</td></tr>'); } } } ?> </table> </body> </html>
Vielen Dank schon mal!!!
-
Ein Gast antworteteGelogen ^^ .. So sieht das für sinniges CSS aus:
Code:
print '[*]';
print ''.$row['name'].'';
print '';
Du musst die URL auf der du dich befindest, aus `navNodes` abfragen,
Code:SELECT * FROM navNodes where $_POST['id'] = ...
Wie frage ich denn aus zwei Tabellen gleichzeitig ab, mit LEFT JOIN?
Einen Kommentar schreiben:
-
Zitat von MWingenbachBis jetzt wird eine Navigationsleiste mit einer Ebene erzeugt, die Formatierung läuft über css.
Code:print '[*]'; print ''.$row['name'].''; print '';
Zitat von MWingenbachWie schaffe ich es jetzt, dass Untermenues sich beim anklicken öffnen?
Steh schon eine ganze Weile an dem Punkt und finde keine Lösung? Muss ich dann jedesmal eine neue Datenbankabfrage starten???
Einen Kommentar schreiben:
-
Ein Gast antworteteHab die erste Tabelle nun folgendermaßen erstellt:
navNodes (id, name, position, url, status)
Code:db_connect () or exit (); $result = mysql_query('SELECT * FROM navNodes WHERE status = '1' ORDER BY position ASC'); while($row = mysql_fetch_array($result)) { echo ('<tr><td>'); echo (''.$row['name'].''); echo ('</td></tr>'); }
Wie schaffe ich es jetzt, dass Untermenues sich beim anklicken öffnen?
Steh schon eine ganze Weile an dem Punkt und finde keine Lösung? Muss ich dann jedesmal eine neue Datenbankabfrage starten???
Einen Kommentar schreiben:
-
Ein Gast antworteteDanke, ich versuch´s mal...
...melde mich später sicherlich noch mal hier für weitere Fragen!
Einen Kommentar schreiben:
-
Wo siehst du da Untermenüs, die eine solche Unterscheidung nötig hätten?
Die Menüs sind allesamt gleichberechtigt ... ob sie Unter- oder gar Unter-Unter-Menüs sind, ergibt sich nur aus der Bindung ...
Was wohl aber noch fehlt ist irgendwo ein etwa `bRoot`, was angibt, dass es sich um den ersten Level in der Navigation handelt
Einen Kommentar schreiben:
-
Ein Gast antwortetenavNodes (id, Menuepunkt, Position, URL, Status);
navNodeCombine (node, combinesTo);
Einen Kommentar schreiben:
-
Prinzipiell habe ich keine Einwände, wenn das Vorhaben dem Design deiner Anwendung zu gute kommt ... aber die Tabellenstruktur ist nicht so prall ...
navNodes (id, Menuepunkt, Position, URL, Status);
navNodeCombine (node, combinesTo);
Macht zwar die Abfrage leicht abstrakt .. ist dafür generisch ...
Ausserdem kannst du so Menüpunkte an beliebige Menüpünkte anpappen .. nicht nur einen ...
Einen Kommentar schreiben:
-
gute idee!
hier kannste die Anzeige rausnehmen! Musst dann eben nur an der richtigen stelle die Variablen einfügen!
http://www.dhtmlcentral.com/script/s...?category=menu
Einen Kommentar schreiben:
Einen Kommentar schreiben: