Ankündigung

Einklappen
Keine Ankündigung bisher.

Menue -> dynamisch machen...

Einklappen

Neue Werbung 2019

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

  • Menue -> dynamisch machen...

    Hallo zusammen - Ich bin neu hier!
    Vill. könnt ihr mir ja helfen. Mein Problem ist, meine Webseite ist aus vielen einzelnden PHP-Komponenten aufgebaut. (index.php, seite1.php, impressum.php ... etc) Und da ich recht häufig das Menü ändern muss, habe ich mir gedacht das ich es einfach auf jeder Seite include. Das Design sorgt aber dafür das im Menü die grade geöffnete Seite ein Symbol enthält und das nur die seiten der untergruppe zu sehen sind. (Hört sich kompliziert an...)

    In dem Beispiel ist "Seite4" geöffnet:
    • Übergruppe1
      • - Seite1
      • - Seite2
      • - Seite3
      • -->Seite4
      • - Seite5
    • Übergruppe2
    • Übergruppe3
    • Übergruppe4
    Im Code könnte das so aussehen:
    Code:
              <div id="menumain">
                <a class="menuitem" href="ueber1.php">Übergruppe1</a>
                <div class="menusub" style="display:block;">
                <a class="menuitem" href="seite1.php">Seite1</a>
                <a class="menuitem" href="seite2.php">Seite2</a>
                <a class="menuitem" href="seite3.php">Seite3</a>
                <a class="menuitem" href="seite4.php" id="menuitemselect">Seite4</a>
                <a class="menuitem" href="seite5.php">Seite5</a>
                </div>
    
                <a class="menuitem" href="ueber2.php">Übergruppe2</a>
                <div class="menusub">
                <a class="menuitem" href="seite6.php">Seite6</a>
                <a class="menuitem" href="seite7.php">Seite7</a>
                <a class="menuitem" href="seite8.php">Seite8</a>
                <a class="menuitem" href="seite9.php">Seite9</a>
                <a class="menuitem" href="seite10.php">Seite10</a>
                </div>
    
                <a class="menuitem" href="ueber3.php">Übergruppe3</a>
                <div class="menusub">
                <a class="menuitem" href="seite11.php">Seite11</a>
                <a class="menuitem" href="seite12.php">Seite12</a>
                </div>
    
                <a class="menuitem" href="ueber2.php">Übergruppe3</a>
                <div class="menusub">
                <a class="menuitem" href="seite13.php">Seite13</a>
                </div>
    
                <a class="menuitem" href="ueber4.php">Übergruppe4</a>
                <div class="menusub">
                <a class="menuitem" href="seite14.php">Seite14</a>
                </div>
              </div>
    Also: Durch style="display:block;" wird der Menüblock amgezeigt und durch id="menuitemselect" wird der Menüeintrag hervorgehoben.
    Und jetzt würde ich gerne daraus ein dynamisches Menü machen sodass ich zumbeispiel einfach nur ein der PHP-datei das Menü durch eine Funktion aufrugen kann (menue("Übergruppe1","Seite4"); ??)

    Vill. habt ihr ja eine Idee wie sich das realisieren lässt.

    Freue mich über jede Idee, JahX

  • #2
    Schau dir doch bitte mal die $_GET-Methode an...
    Findest bei Google...

    Dann kannst du 's viel einfacher lösen!
    Beispiel:
    PHP-Code:
    if(!isset($_GET["site"])) { $site "startseite.php"; } else { $site $_GET["site"]; }

    include(
    $site); 
    Sowas in der Art!

    Versuch erstmal die $_GET-Methode anzuwenden, bei weiteren Fragen, poste sie..


    Gruß, dex

    Kommentar


    • #3
      Vielleicht ist auch PEAR :: Package :: HTML_TreeMenu etwas für Dich.

      Kommentar


      • #4
        Zitat von dex Beitrag anzeigen
        Beispiel:
        PHP-Code:
        if(!isset($_GET["site"])) { $site "startseite.php"; } else { $site $_GET["site"]; }

        include(
        $site); 
        Stop Stop! Auf keine Fall so machen. Damit kannst Du über die URL jedes beliebige Script includen!

        Sieh Dir statt dessen mal dieses Posting und den gesamten Thread dazu an. Oder diese einfache Variante.
        [COLOR="#F5F5FF"]--[/COLOR]
        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
        [COLOR="#F5F5FF"]
        --[/COLOR]

        Kommentar


        • #5
          Kann man vielleicht so machen:

          in jede Seite muss zuerst mal der Seitenname rein:

          $seite = 'seite1';

          In einer menu.php, die auf allen Seiten includiert wird, kommt dann rein:

          PHP-Code:

          // Menüpunkt1 ausgeben
          echo $menupunkt1
          if($seite=='seite1') {
            
          // Untermenüpunkt für Seite 1 ausgeben
            
          echo $menupunkt11;
            echo 
          $menupunkt12;
          }

          // Menüpunkt2 ausgeben
          echo $menupunkt2
          if($seite=='seite2') {
            
          // Untermenüpunkt für Seite 2 ausgeben
            
          echo $menupunkt21;
            echo 
          $menupunkt22;
           } 
          In die Unterseiten des Menüpunktes 1 muss dann auch der $seite = 'seite1'. Dann sollte das schon funktionieren. GETten muss man da nix.
          [PHP]if ($var != 0) {
          $var = 0;
          }[/PHP]

          Kommentar


          • #6
            Möglich, dass du es schon weißt..., ... aber es ist viel einfacher, wenn man eine Standard-Seite hat (z.B. die index.php), in die man die Dinge jenach bedarf includet

            --- index.php---
            PHP-Code:
            ...
            ...
            include(
            "menu.php");
            include(
            $seitendatei);
            ...
            ... 
            --------------

            wobei $seitendatei aus der "menu.php" übergeben wird.

            Auf diese Art brauchst du das Menü nicht in jede einzelne Seite includen sondern nur in eine einzige.
            Und nicht nur das Menü, sondern auch Kopf- und Fuss- und sonstige Bereiche, die überall gleich sind.
            In der Menu.php kannst du ja via Variable und CSS den ausgewählten Menüpunkt "highlighten"

            Kommentar


            • #7
              Ich danke Dir, nikosch77...
              Hab bisher nie ein Risiko dabei feststellen können, doch wenn man es sich genau überlegt, dann ist ein sehr Hohes dabei..

              Hier mein "2." Quelltext, ich hoffe mal damit kann ich in Punkto Sicherheit nichts falsch machen:

              PHP-Code:
              <?php
              if(isset($_GET["site"]))
                          { 
                          
              $erlaubt = array("seite1.php","seite2.php",...);
                          
              $anzahl count($erlaubt);
                          
              $i 0;
                          while(
              $i $anzahl)
                               {
                               if(
              $_GET["site"] == $erlaubt[$i])
                                 {
                                 include(
              $erlaubt[$i]);
                                 
              $included 1;
                                 }
                                
              $i++;
                               }
                          if(!isset(
              $included))
                            {
                            echo 
              "Include dieser Seite ist nicht erlaubt.";
                            }
                          }
                        else
                          { include(
              "startseite.php"); }
              ?>
              Bitte sagen, wenn ich damit falsch liege!

              Gruß, dex

              Kommentar


              • #8
                Ich finde die Lösung in mehrfacher Hinsicht nicht so dolle (und empfehle weiterhin eine Lösung ähnlich der hier beschriebenen: http://www.php.de/php-einsteiger/133....html#post9744)

                1/ Die Links sind nicht sehr hübsch und konfrontieren den Anwender mit Scriptnamen. Auch Suchmaschinen freuen sich über sprechende URL Bestandteile

                2/ Ich finde es sinnvoll, Aliase und Fallbacks verwenden zu können, bspw. Home als Alias zu Start. Bei Deiner Lösung müßte man dazu dagegen zwei Dateien mit identischen Inhalten anlegen.

                3/ URL Parameter sollte Groß/Kleinschreibung-unanhängig sein.

                Speziell zu Deinem Code

                - Die Schleife ist unnötig -> in_array () . Die for Schleife könnte ansonsten durch foreach besser gelöst werden

                - Die Schleife erzeugt ein fehlerhaftes Verhalten, wenn Seiten mehrfach in $erlaubt enthalten sind: durch eine fehlende Abbruchbedingung würde der Inhalt mehrfach eingebunden

                - Die Verwendung von $included ist obligat
                [COLOR="#F5F5FF"]--[/COLOR]
                [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                [COLOR="#F5F5FF"]
                --[/COLOR]

                Kommentar


                • #9
                  Irgendwie hat das wenig mit dem eingangs geschilderten Problem zu tun. Da steht, dass es eine Reihe von php-Dateien gibt - index.php, seite1.php, impressum.php und dass das noch statisch vorhandene Menü ausgelagert und dann includiert werden soll.

                  Also muss in jede der einzelnen Dateien rein: include "menu.php" - da muss kein GET-Parameter verifiziert werden und auch sonst nichts includiert werden.

                  Wie man das Menü gestaltet muss, damit es sich "ausklappt" habe ich schon gepostet. Aber ich vermute mal, dass der Fragesteller schon das Weite gesucht hat.
                  [PHP]if ($var != 0) {
                  $var = 0;
                  }[/PHP]

                  Kommentar


                  • #10
                    @wolla: Das stimmt, zwar, aber es ist um vieles leichter ein automatisches Menüfeedback umzusetzen, wenn die Seitennavigation auch zentral gesteuert ist. Eine zentrale Indexdatei ist hier meist sinnvoller, als in lauter verschiedene Einzelseiten gleiche Seitenelemente einzubauen.

                    Mein Vorschlag war primär auch eine Reaktion auf den gefährlichen Vorschlag, GET Parameter direkt einzubinden.
                    [COLOR="#F5F5FF"]--[/COLOR]
                    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                    [COLOR="#F5F5FF"]
                    --[/COLOR]

                    Kommentar

                    Lädt...
                    X