ftdesigner: Menüpunkt MySQL->"Active"

Servus Leuts

Ich weiß, dieses Thema wurde hier schon mal besprochen, doch komm ich einfach nicht weiter.

Ich möchte eine menüliste erstellen, die die einzelne menüpunkte aus der DB hohlt.
Geht alles wunderbar, ist ja auch kein großes ding.

nun möcht ich aber, dass wenn ich den einen Link anklicke, dass der sowas wie "active" ist.
Doch active, funktoniert ja nur solang, wie die maustaste gedrückt ist.

Wie könnt ich denn das nun lösen?

hier könnt ihr euch die menüliste anschauen:

neu.sic-raum.ch

Ich danke euch jetzt schon.

Grüße

ftdesigner

  1. Wie könnt ich denn das nun lösen?

    gib ihm eine id oder klasse "current" (wenn du mehrere menüs hast, die ggf den selben punkt haben)

    alternativ, ersetze das element durch ein span-element

    den aktuell aktiven menüpunkt verlinken ist ohnehin eine schlechte idee

    1. Wie könnt ich denn das nun lösen?

      gib ihm eine id oder klasse "current" (wenn du mehrere menüs hast, die ggf den selben punkt haben)

      Ich habe ihnen ja schon ne klasse gegeben, ich kann ihm ja nicht noch ne klasse anhängen, oder doch?
      und die klasse current wird dann erkennen, welcher link grade aktiv ist?

      alternativ, ersetze das element durch ein span-element

      den aktuell aktiven menüpunkt verlinken ist ohnehin eine schlechte idee

      Was meinst du damit? Verlinken womit?

      1. Hi,

        gib ihm eine id oder klasse "current" (wenn du mehrere menüs hast, die ggf den selben punkt haben)

        Ich habe ihnen ja schon ne klasse gegeben,

        Welche und warum?

        ich kann ihm ja nicht noch ne klasse anhängen, oder doch?

        Doch, natuerlich.

        und die klasse current wird dann erkennen, welcher link grade aktiv ist?

        Nein.
        Das hat dein Script zu erkennen - und dann nur dem "aktiven" Link die Klasse current zu verpassen, so dass du ihn darueber gesondert formatieren kannst.

        alternativ, ersetze das element durch ein span-element

        den aktuell aktiven menüpunkt verlinken ist ohnehin eine schlechte idee

        Was meinst du damit? Verlinken womit?

        Mit der Seite, die sowieso gerade angezeigt wird. Warum willst du innerhalb dieser auf sie selbst verlinken?
        Ersetze den Link auf die aktuellen Seite durch einen span, dann kannst du den direkt gesondert formatieren.

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
      2. Ich habe ihnen ja schon ne klasse gegeben, ich kann ihm ja nicht noch ne klasse anhängen, oder doch?

        natürlich kannst du das, aber wenn du jetzt in deinem link schon eine klasse hast, ist das ein indiz dafür, dass du den nachfahren-selektor noch nicht kennst

        und die klasse current wird dann erkennen, welcher link grade aktiv ist?

        das hängt von deinem stylesheet ab - die klasse selbst erkennt das nicht

        dein menüscript muss erkennen, welcher menüpunkt der aktuelle ist (nicht der aktive)

        unterscheide bitte zwischen "aktiv" (ich halte grade in diesem moment den daumen drauf) und "current" (der derzeitig gewählte punkt)

        Was meinst du damit? Verlinken womit?

        mit nichts

        der derzeitig gewählte menüpunkt sollte eigentlich nicht verlinkt sein, da das den benutzer unnötig verwirrt - aber die programmlogik dahinter ist die selbe - ob du nun statt einem link ein span-element erzeugst oder eine klasse einfügst und sonst nicht ist egal

        btw:
        dein codebespiel ist übrigens nicht aufrufbar, von der seite ist es schwierig sich ein bild davon zu machen

        1. Also, das mit dem Verlinken, weiß ich nicht so genau, ob ich das nun mach oder nicht.
          Aber hier ist mein Navi php code.

          <?php  
          if ($_GET["lang"] == "de" OR $_GET["lang"] == "") {  
          while ($fetch = mysql_fetch_assoc($select)) {  
          ?>  
            
          <div class="navi-button" id="<?php $_GET["content"] ?>">  
          <a href="index.php?content=<?php echo "" .$fetch["id"]. ""; ?>&lang=de"><?php  echo "" .$fetch["de"]. "";?></a>  
          </div>  
            
          <?php }} ?>
          

          Was ich auch noch nicht verstehe ist, wie programmier ich denn die erkennung des aktuellen links?

          1. Hi,

            Was ich auch noch nicht verstehe ist, wie programmier ich denn die erkennung des aktuellen links?

            In dem du erst mal ermittelst, ueber welchen Link die aktuelle Scriptinstanz denn aufgerufen wurde.

            $_GET und ggf. $_SERVER liefern dir alle relevanten Informationen. (Wenn du dir ueber deren Inhalte im unklaren bist, schau sie dir mit print_r/var_dump an.)

            MfG ChrisB

            --
            „This is the author's opinion, not necessarily that of Starbucks.“
            1. Also, ChrisB, ich glaub, du möchtest mir ganz hilfreiche dinge beibringen, doch ich verstehs nicht.

              In dem du erst mal ermittelst, ueber welchen Link die aktuelle Scriptinstanz denn aufgerufen wurde.

              Was ist ein scriptinstanz?

              $_GET und ggf. $_SERVER liefern dir alle relevanten Informationen. (Wenn du dir ueber deren Inhalte im unklaren bist, schau sie dir mit print_r/var_dump an.)

              $_GET verwende ich ja und verstehs auch $_Server ist wahrscheinlich ne ähnliche funktion die aus der Adresse liest.

              Doch wie setz ich das zusammen mit current ein?

              so?

                
              if ($_Get["content"] == "3") {  
               <style> {  
              .current a {  
               font:  
              etc.  
              }  
              </style>  
              }  
              
              

              wahrscheinlich nicht...

              1. In dem du erst mal ermittelst, ueber welchen Link die aktuelle Scriptinstanz denn aufgerufen wurde.
                Was ist ein scriptinstanz?

                die aktuelle ausprägung deines scripts

                wenn 5 besucher deine seite aufgrufen, mit 5 verschiedenen menüpunkten, soll natürlich jeder nur den menüpunkt auf "current" gesetzt bekommen, der ihn gerade in dieser form aufgerufen hat

                Doch wie setz ich das zusammen mit current ein?

                wahrscheinlich nicht...

                fast

                ich würds eher mit sowas versuchen:
                if link zu meine menüpunkt == link der gerade in der adresszeile steht then
                  <a class="current" />
                else
                  <a />
                end if

                im übrigen, deine html ausgabe ist nicht so optimal, wie sie sein sollte - wenn du schon code generierst, warum verwendest du dann nicht ordentlichen code?

                eine unsortierte liste zb - anhand ingos beispiel

                1. ich würds eher mit sowas versuchen:
                  if link zu meine menüpunkt == link der gerade in der adresszeile steht then

                  Wie zeig ich den den link an? das heisst, dass ich alle 5 menüpunkte manuel bearbeiten muss?

                  <a class="current" />
                  else
                    <a />
                  end if

                  das versteh ich alles

                  im übrigen, deine html ausgabe ist nicht so optimal, wie sie sein sollte - wenn du schon code generierst, warum verwendest du dann nicht ordentlichen code?

                  Weil ich nicht weiß, was daran falsch ist

                  eine unsortierte liste zb - anhand ingos beispiel

                  Was willst du mir dabei zeigen

                  1. ich würds eher mit sowas versuchen:
                    if link zu meine menüpunkt == link der gerade in der adresszeile steht then
                    Wie zeig ich den den link an? das heisst, dass ich alle 5 menüpunkte manuel bearbeiten muss?

                    wenn du eine scriptsprache verwendest und musst etwas an 5 stellen manuell bearbeiten, dann hast du etwas gewaltig falsch gemacht :)

                    an 2 stellen bearbeiten (konfiguration und aufruf der konfiguration) ist ok, aber 5x ist ein fehler

                    du gibst dein menü in einer schleife aus, richtig?
                    jeder menüpunkt weiss, wohin er verlinken muss, richtig?
                    jede scriptinstanz weiss, woher sie aufgerufen wurde (das weiss php in jedem fall)

                    wenn du nun in deinem schleifendurchlauf beide dir bekannten werte vergleichst, ist kannst du die verzweigung dort einbauen

                    Was willst du mir dabei zeigen

                    wie man ein menü logisch gesehen vernünftig mit html auszeichnet ;)

                    wie bereits erwähnt solltest du in erster linien beginnen, dein html zu erstellen - einen funktionlosen dummy, dabei sorfst du dafür, dass jeder menüpunkt identisch ist und in seiner struktur dem menübaum entsprechend ausgezeichnet ist

                    wenn das erledigt ist, beginnst du das ganze mit css zu formatieren und überlegst, dir, wie du einen speziellen menüpunkt (den derzeitigen) vom rest unterscheiden kannst

                    sobald das getan ist: schreibe das script, welches diese systematik dynamisch erzeugt

                    das sollte dann in etwa so aussehen

                      
                    <ul id="menu">  
                      <li class="current"><a href="foo1.php">menuüunkt 1</a></li>  
                      <li><a href="foo2.php">menuüunkt 2</a></li>  
                      <li><a href="foo3.php">menuüunkt 3</a></li>  
                      <li><a href="foo4.php">menuüunkt 4</a></li>  
                      <li><a href="foo5.php">menuüunkt 5</a></li>  
                    </ul>
                    
                    while ($menupunkteresult) {  
                      echo '<li';  
                      if ($aktuell?) {  
                        echo ' class="active"';  
                      }  
                      echo '><a href="' . $menuepunkt . '">menuüunkt 2</a></li>';  
                    }  
                    }
                    
                    1. wenn du eine scriptsprache verwendest und musst etwas an 5 stellen manuell bearbeiten, dann hast du etwas gewaltig falsch gemacht :)

                      an 2 stellen bearbeiten (konfiguration und aufruf der konfiguration) ist ok, aber 5x ist ein fehler

                      Das hab ich auch so gemacht.
                      Ich muss das menü nur einmal bearbeiten

                      du gibst dein menü in einer schleife aus, richtig?
                      jeder menüpunkt weiss, wohin er verlinken muss, richtig?
                      jede scriptinstanz weiss, woher sie aufgerufen wurde (das weiss php in jedem fall)

                      So ists, so hab ichs ja auch gemacht!

                      wenn du nun in deinem schleifendurchlauf beide dir bekannten werte vergleichst, ist kannst du die verzweigung dort einbauen

                      Was willst du mir dabei zeigen
                      wie man ein menü logisch gesehen vernünftig mit html auszeichnet ;)

                      wie bereits erwähnt solltest du in erster linien beginnen, dein html zu erstellen - einen funktionlosen dummy, dabei sorfst du dafür, dass jeder menüpunkt identisch ist und in seiner struktur dem menübaum entsprechend ausgezeichnet ist

                      wenn das erledigt ist, beginnst du das ganze mit css zu formatieren und überlegst, dir, wie du einen speziellen menüpunkt (den derzeitigen) vom rest unterscheiden kannst

                      sobald das getan ist: schreibe das script, welches diese systematik dynamisch erzeugt

                      das sollte dann in etwa so aussehen

                      <ul id="menu">
                        <li class="current"><a href="foo1.php">menuüunkt 1</a></li>
                        <li><a href="foo2.php">menuüunkt 2</a></li>
                        <li><a href="foo3.php">menuüunkt 3</a></li>
                        <li><a href="foo4.php">menuüunkt 4</a></li>
                        <li><a href="foo5.php">menuüunkt 5</a></li>
                      </ul>

                      
                      >   
                      > ~~~php
                      
                      while ($menupunkteresult) {  
                      
                      >   echo '<li';  
                      >   if ($aktuell?) {  
                      >     echo ' class="active"';  
                      >   }  
                      >   echo '><a href="' . $menuepunkt . '">menuüunkt 2</a></li>';  
                      > }  
                      > }
                      
                      

                      Ok, dass muss ich erst noch lernen.
                      bis jetzt hab ich mein menü nie mit listen gemacht.

                      1. Ok, dass muss ich erst noch lernen.
                        bis jetzt hab ich mein menü nie mit listen gemacht.

                        im prinzip ist kein unterschied zu deinem aktuellen code, nur dass die elemente in einem definierten, logischen gefüge stehen zu dem es einerseits standards gibt und andererseits tonnenweise beispiele

                      2. Hallo

                        bis jetzt hab ich mein menü nie mit listen gemacht.

                        Ein Tip: Schau dich bei Listamatic um. Dort werden diverse Beispiele der CSS-seitigen Gestaltung einer Navigation, die mit einer Liste (immer der selbe HTML-Quelltext) aufgebaut ist, gezeigt. Als Anregung ist das sehr hilfreich.

                        Tschö, Auge

                        --
                        Die deutschen Interessen werden am Liechtenstein verteidigt.
                        Veranstaltungsdatenbank Vdb 0.2
                  2. Hi,

                    if link zu meine menüpunkt == link der gerade in der adresszeile steht then
                    Wie zeig ich den den link an?

                    So, wie andere Daten auch - also bspw. mit echo.

                    das heisst, dass ich alle 5 menüpunkte manuel bearbeiten muss?

                    Nein. Sinnvollerweise loest man so etwas mit einer Schleife.

                    im übrigen, deine html ausgabe ist nicht so optimal, wie sie sein sollte - wenn du schon code generierst, warum verwendest du dann nicht ordentlichen code?
                    Weil ich nicht weiß, was daran falsch ist
                    eine unsortierte liste zb - anhand ingos beispiel
                    Was willst du mir dabei zeigen

                    Na das, was er schrieb - wie man ein Menue sinnvollerweise in HTML als Liste von Links auszeichnet.

                    MfG ChrisB

                    --
                    „This is the author's opinion, not necessarily that of Starbucks.“