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

  • 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!


  • #2
    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
    http://www.dhsmedia.de
    http://www.deutsch-im-blick.de

    Kommentar


    • #3
      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 ...

      Kommentar


      • #4
        navNodes (id, Menuepunkt, Position, URL, Status);
        navNodeCombine (node, combinesTo);
        Wo bleibt da die Position, die URL und der Status für die Untermenues?

        Kommentar


        • #5
          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

          Kommentar


          • #6
            Danke, ich versuch´s mal...

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

            Kommentar


            • #7
              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???

              Kommentar


              • #8
                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)

                Kommentar


                • #9
                  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?

                  Kommentar


                  • #10
                    INNER JOIN in diesem Falle

                    Kommentar


                    • #11
                      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!!!

                      Kommentar

                      Lädt...
                      X