Ankündigung

Einklappen
Keine Ankündigung bisher.

Navigationsleiste mit Datenbank erstellen

Einklappen

Neue Werbung 2019

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

  • Gast-Avatar
    Ein Gast erstellte das Thema Navigationsleiste mit Datenbank erstellen.

    Navigationsleiste mit Datenbank erstellen

    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!

  • Gast-Avatar
    Ein Gast antwortete
    Also 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>
    Also hab das ganze jetzt mal so versucht. Allerdings komm ich mit der INNER JOIN Abfrage nicht klar. Sorry! Vielleicht kannst Du mir noch mal helfen?!? Schau auch sonst bitte mal drüber ob ich das so machen kann, oder ob ich mich in ner Sackgasse befinde.

    Vielen Dank schon mal!!!

    Einen Kommentar schreiben:


  • Guradia
    antwortet
    INNER JOIN in diesem Falle

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Gelogen ^^ .. So sieht das für sinniges CSS aus:

    Code:

    print '[*]';
    print ''.$row['name'].'';
    print '';
    Warum? Ist es nicht egal ob ich[*] oder <td> in css formatiere???

    Du musst die URL auf der du dich befindest, aus `navNodes` abfragen,
    Kann ich stattdessen auch ein verstecktes Formularfeld mit der ID mitführen und die Abfrage sinngemäß so wählen:

    Code:
    SELECT * FROM navNodes where $_POST['id'] = ...
    Müsste doch auch gehen, oder?

    Wie frage ich denn aus zwei Tabellen gleichzeitig ab, mit LEFT JOIN?

    Einen Kommentar schreiben:


  • Guradia
    antwortet
    Zitat von MWingenbach
    Bis jetzt wird eine Navigationsleiste mit einer Ebene erzeugt, die Formatierung läuft über css.
    Gelogen ^^ .. So sieht das für sinniges CSS aus:

    Code:
            print '[*]';
            print ''.$row['name'].'';
            print '';

    Zitat von MWingenbach
    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???
    Du musst die URL auf der du dich befindest, aus `navNodes` abfragen, dies mit `navNodeCombine` verbinden, dieses wiederum komibiniert mit einer zweiten Instanz von `navNodes` ... (eine einzelne Abfrage versteht sich)

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Hab 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>');
    		
    		}
    Bis jetzt wird eine Navigationsleiste mit einer Ebene erzeugt, die Formatierung läuft über css.
    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:


  • Gast-Avatar
    Ein Gast antwortete
    Danke, ich versuch´s mal...

    ...melde mich später sicherlich noch mal hier für weitere Fragen!

    Einen Kommentar schreiben:


  • Guradia
    antwortet
    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:


  • Gast-Avatar
    Ein Gast antwortete
    navNodes (id, Menuepunkt, Position, URL, Status);
    navNodeCombine (node, combinesTo);
    Wo bleibt da die Position, die URL und der Status für die Untermenues?

    Einen Kommentar schreiben:


  • Guradia
    antwortet
    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:


  • kid01
    antwortet
    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:

Lädt...
X