Dynamisches Menü (ich denke in die falsche Richtung)

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

  • Dynamisches Menü (ich denke in die falsche Richtung)

    Hallo...

    Ich arbeite grad an meiner Homepage weiter, und bin grad am überlegen, wie ich das Menü am besten aufzieh..

    Begonnen habe ich mit einer datei menu.php

    Darin sind lauter if-Abfragen wo ich mit der Adresse einen Wert weitergebe welches Menü grad geöffnet werden soll, da sich das Menü oft ändern soll wenn ein Link angeklickt wird.

    (Beispeil)
    PHP-Code:
    if($gr==un){
        
        echo
    "
        <br><br>
            <a href=index.php class=\"hauptsitemenu1link\">Startseite</a><br><br>
            <a href=index.php?page=ft&gr=fts class=\"hauptsitemenu1link\">Fotos</a><br> 
            <a href=index.php?page=zper&gr=zp class=\"hauptsitemenu1link\">Zur Person</a><br><br>
            <a href=index.php?page=anderer Link class=\"hauptsitemenu1link\">anderer Link</a><br><br>
            <a href=index.php?page=anderer Link class=\"hauptsitemenu1link\">anderer Link</a><br><br>


    "
    ;

    wenn nun z.B.: Fotos geklickt wird dann passiert folgendes:
    Es öffnet sich die neue Seite mit diesem Menü:

    PHP-Code:
    if($gr==fts){
        
        echo
    "
        <br><br>
            <a href=index.php class=\"hauptsitemenu1link\">Startseite</a>
        <br><br>
        <b>
            <a href=index.php?page=ft&gr=fts class=\"hauptsitemenu1link\">Fotos</a>
        <br></b><i> 
            <a href=index.php?page=ft&action=achim&gr=fts class=\"hauptsitemenu1link\">Achim</a><br> 
        &nbsp;&nbsp;
            <a href=index.php?page=ft&action=steffi&gr=fts class=\"hauptsitemenu1link\">Steffi</a><br> 
        &nbsp;&nbsp;
            <a href=index.php?page=ft&action=freunde&gr=fts class=\"hauptsitemenu1link\">Freunde</a>
        <br></i> 
            <a href=index.php?page=zper&gr=zp class=\"hauptsitemenu1link\">Zur Person</a><br><br>


    "
    ;

    Aber so werd ich alt...

    Gibt es nicht eine einfachere Möglichkeit wie man das lösen kann?
    Ich kann ja nicht 100.000 if-Abfragen machen, nur damit ich immer das richtige Menü zur richtigen Seite aufrufe...
    Außerdem, man stelle sich einmal vor, dass z.B. der Link "zur Person" einmal sich änder sollte oder gelöscht wird...
    Das ist ja ein extremer aufwand, in jeder if-Abfrage nachzuschauen, ob da der Link enthalten ist.

    Kann mir jemand einen denkanstoß geben, ein Beispielscript verraten oder sonstiges...
    Bin für alles dankbar...

    LG euer,
    Achim

  • #2
    Re: Dynamisches Menü (ich denke in die falsche Richtung)

    PHP-Code:
    if($gr==un){ 
    Strings sind immer noch keine Konstanten.

    Und dein Problem sollte sich mit einer vernünftigen Datenstruktur lösen lassen - bspw. Ablage der Linktexte/-ziele in Arrays, Durchlaufen dieser in Schleifen.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      stell mal das error_reporting hoch.
      http://www.php-resource.de/forum/sho...threadid=50454

      du solltest nicht mit der navigation sondern mit der datenstruktur beginnen. vielleicht sollte man sie in einer db lagern. in welcher relation stehen sie zueinander, welche dienste möchtest du anbieten, etc.

      Kommentar


      • #4
        Hi... Ich mir jetzt mal die Seite mit den Regeln welche du mir gepostet hast durchgelesen, und verstehe nicht, warum du sie mir postest....

        Zum Anderem die Links in eine DB eintragen naja... Wäre möglich, ist aber nicht mein Wunsch, da ich dann wieder für jede Seite eine Abfrage machen muss.. Kann ich gleich bei mein Art bleiben...
        (hast du das gemeint?)

        und mit der array-Schleife ist mir zwar klar, wie ich das Menü aufrufe, aber nicht wie ich es für jede Seite anders aussehn lasse.

        LG Achim

        Kommentar


        • #5
          Original geschrieben von iBumsti
          Hi... Ich mir jetzt mal die Seite mit den Regeln welche du mir gepostet hast durchgelesen, und verstehe nicht, warum du sie mir postest....
          Damit du dein error_reporting beim Entwicklen vernünftig einstellst - dann müssen nicht wir dir erklären, dass du undefinierte Konstanten verwendest, dann kann PHP das selber übernehmen.
          und mit der array-Schleife ist mir zwar klar, wie ich das Menü aufrufe, aber nicht wie ich es für jede Seite anders aussehn lasse.
          Na dann definierst du vielleicht erst mal genauer, was das im Detail bedeuten soll.

          Und auf den Gedanken, dass man in einem Array ja evtl. auch hinterlegen könnte, für welche Seiten ein Menüpunkt "gültig" sein soll, oder für welche Seiten welche Punkte existieren, kommst du ja vielleicht auch selber, wenn du erst mal wirklich ein paar Überlegungen zu einer vernünftigen Datenstruktur anstellst.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Ist $gr ein URL Parameter ? Mein Vorschlag wäre auch ein Array mit den Indecies nach dem Parameter
            PHP-Code:
            $temp = array();
            $temp['un'] = array('<a href=index.php class=\"hauptsitemenu1link\">Startseite</a>',
            '<a href=index.php?page=ft&gr=fts class=\"hauptsitemenu1link\">Fotos</a>'); 
            Anhand des Parameters stellts du fest welche Index vom temp geladen werden muss und läufst du die Links mittels einer Schleife und gibst diese aus
            PHP-Code:
            if(isset($gr) && array_key_exists($gr,$temp)){
                foreach(
            $temp[$gr] as $wert){
                    echo 
            $wert;
                }

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              Tobi du bist S.U.P.E.R.
              (Durch deinem Text hat sich in meinem Hirn der Knopf gelöst, und jetzt hab ich die Idee von penizillin nochmal überlegt, und denke, dass das wirklich besser ist.

              Zum Punkt Datenstruktur bin ich jetzt auch ein ganzes Stück weiter gekommen.

              Ich danke euch allen...

              LG Achim

              Kommentar


              • #8
                Also ist es besser einen riesigen Array zu haben als viele If oder Trinitäts abfragen??
                Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
                - ...und solche Behauptungen in "falsches Resourcenmanagement"

                Kommentar


                • #9
                  Also ist es besser einen riesigen Array zu haben als viele If oder Trinitäts abfragen??
                  Im Falle eines Nav Menues einer Webseite ist riesig wohl eher relativ zu sehen Da geht es wohl mehr darum sich keinen Tippkrampf zu holen...
                  Und ja die Prüfung von Bedingungen kostet auch ein bissel Rechenzeit pro if. Das merkst du schnell wenn du mal ein Primzahlensieb bastelst und sehr grosse Zahlen nimmst (Bedingungen in Schleifen die milionenfach durchlaufen werden). Da kommen Sekundenunterschiede zusammen.
                  Ich würde wagen zu behaupten, dass PHP so ein Array schneller aufgebaut hat, als es ein if/elseif Konstrukt mit x-fachen Verzweigungen durchläuft.

                  Gruss

                  tobi

                  p.s. die Sache sieht ev anders aus wenn du eine Navi aller www Seiten aufbauen willst. Aber in diesem Falle hättest du mit php noch ganz andere Probleme
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    ich dachte das so:

                    PHP-Code:
                    foreach($menu as $menu_topic){
                      
                    $topic = ($menu_topic['id'] == $_GET['id']) ? 
                                         
                    '<a href=link.php?id='.$menu_topic['id'].'>'.$menu_topic.'</a>' 
                                         
                    '<b><a href=link.php?id='.$menu_topic['id'].'>'.$menu_topic.'</a></b>';
                      echo 
                    $topic;

                    und jenachdem wieviel menupunkte das sind werden das schon recht große arrays!

                    bei 10 Menupunkten hat man immer hin 100 Einträge!



                    Zuletzt geändert von zerni; 21.02.2007, 23:35.
                    Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
                    - ...und solche Behauptungen in "falsches Resourcenmanagement"

                    Kommentar


                    • #11
                      Dat ist ne nette Lösung. Habe gar ned daran gedacht das so dynamisch zu machen
                      Statisch oder dynamisch, das ist hier die Frage...

                      Gruss

                      tobi
                      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                      Kommentar


                      • #12
                        und um das zu untermauern:

                        http://www.zer-design.de/test.php?id=2

                        meinst ist schneller!!!

                        leider musste ich irgendwie noch doppel arrays einbauen, sonst wäre er noch viel schneller!
                        Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
                        - ...und solche Behauptungen in "falsches Resourcenmanagement"

                        Kommentar


                        • #13
                          Original geschrieben von zerni
                          http://www.zer-design.de/test.php?id=2

                          meinst ist schneller!!!
                          Ziemlicher Bullshit sind beide "Lösungen" noch - wenn man sich allein die Redundanz der Daten schaut.
                          Zuletzt geändert von wahsaga; 22.02.2007, 12:38.
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            link Menüs löse ich normalerweise so.

                            ganz simples beispiel ^^

                            Code:
                            MYSQL SCHEMA
                            
                            ID Name U_ID
                            1-Home-0
                            2-blafasel-0
                            3-Gästebuch-0
                            4-Gb_Eintrage-3
                            
                            usw.
                            vorteil
                            ich frage nur ab wo U_ID null ist
                            um das haupt menü aufzubauen.

                            erst wenn ein link wirklich geklickt wurde. übertrage ich zu diesem die ID und prüfe auf diese ob es namen mir der U_ID gibt.
                            zudem lässt sich der content der eventuell geladen werden soll auch an der ID fest tackern.

                            meiner meinung nach eigentlich ein recht simples aber effektives system.

                            vorallem kann man dann die GET parameter
                            zb.
                            index?page=1
                            schön abfangen. und vor bösen menschlein schützen.
                            Bitte Beachten.
                            Foren-Regeln
                            Danke

                            Kommentar


                            • #15
                              Original geschrieben von wahsaga
                              Ziemlicher Bullshit sind beide "Lösungen" noch - wenn man sich allein die Redundanz der Daten schaut.
                              Was die Speicherung der Daten angeht hast du recht, aber das ist doch nur als Beispiel anzusehen.
                              Es wird dir vermutlich jeder zustimmen, dass man nicht tonnen an Strings in Arrays reinspeichert.

                              und was hast du noch daran auszusetzen wie man den Array durchläuft? bzw. wie markierst du auf welcher Seite man sich momentan befindet?
                              Zuletzt geändert von zerni; 22.02.2007, 14:10.
                              Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
                              - ...und solche Behauptungen in "falsches Resourcenmanagement"

                              Kommentar

                              Lädt...
                              X