tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
647
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Starfox2007
    Starfox2007 Starfox2007 ist offline Mitglied Silber
    Registriert seit
    Apr 2010
    Beiträge
    87
    Hi zusammen,

    Ich habe ein kleines Problem mit diesem dynamischen CSS Menü Code

    der von hier ist: http://wizardinternetsolutions.com/w...ti-level-menu/

    Und zwar möchte ich das <ul> einmalig am Anfang mit <ul class='menue'> Anfängt und für alle anderen <ul> tags soll je tiefer die Ebene geht <ul class='submenue'> bzw <ul class='submenue2'> ... eingefügt werden.

    Für die <li> Tags möchte ich das wenn Parent gleich 0 <li class='xyz'> eingetragen wird, bei den "Submenüs" kann es ganz einfach nur <li> sein.

    sprich

    <ul class='menue'>
    <li class='Hauptmenue'></li>
    <li class='Hauptmenue'></li>
    <li class='Hauptmenue'></li>
    <ul class='submenue'>
    <li></li>
    <ul class='submenue2'>
    <li></li>
    .
    .
    .

    </ul></ul>


    </ul>

    PHP-Code:
    <?php
    // Select all entries from the menu table
    $result=mysql_query("SELECT id, label, link, parent FROM menue ORDER BY parent, sort, label");
    // Create a multidimensional array to conatin a list of items and parents
    $menu = array(
        
    'items' => array(),
        
    'parents' => array()
    );
    // Builds the array lists with data from the menu table
    while ($items mysql_fetch_assoc($result))
    {
        
    // Creates entry into items array with current menu item id ie. $menu['items'][1]
        
    $menu['items'][$items['id']] = $items;
        
    // Creates entry into parents array. Parents array contains a list of all items with children
        
    $menu['parents'][$items['parent']][] = $items['id'];
    }



    // Menu builder function, parentId 0 is the root
    function buildMenu($parent$menu)
    {
       
    $html "";
       
       if (isset(
    $menu['parents'][$parent]))
       {
          
    $html .= "<ul>\n";
           
           foreach (
    $menu['parents'][$parent] as $itemId)
           {
              if(!isset(
    $menu['parents'][$itemId]))
              {
                 
    $html .= "<li>\n  <a href=?page=".$menu['items'][$itemId]['link'].">".$menu['items'][$itemId]['label']."</a>\n</li> \n";
              }
              if(isset(
    $menu['parents'][$itemId]))
              {
                 
    $html .= "
                 <li>\n  <a href=?page="
    .$menu['items'][$itemId]['link'].">".$menu['items'][$itemId]['label']."</a> \n";
                 
    $html .= buildMenu($itemId$menu);
                 
    $html .= "</li> \n";
              }
           }
           
    $html .= "</ul>\n";
       }
       return 
    $html;
    }

    ?>
    Ich hoffe es kann mir einer weiterhelfen
     

  2. #2
    threadi threadi ist offline Mitglied Brokat
    Registriert seit
    Dec 2006
    Ort
    Leipzig
    Beiträge
    478
    Dein HTML-Code hier ist zunächst mal falsch:

    HTML-Code:
    <ul class='menue'>
    <li class='Hauptmenue'></li>
    <li class='Hauptmenue'></li>
    <li class='Hauptmenue'></li>
           <ul class='submenue'>
                   <li></li>
                      <ul class='submenue2'>
                                                  <li></li>
                                                    .
                                                    .
                                                    .
        </ul></ul>
    </ul>
    Direkt innerhalb von <ul> darf nur <li> vorkommen. Untermenüpunkte müssen dann innerhalb von <li> eingefügt werden. Also:

    HTML-Code:
    <ul class='menue'>
    <li></li>
    <li></li>
    <li>
           <ul>
                   <li>
                      <ul>
                                                  <li></li>
                                                    .
                                                    .
                                                    .
        </ul></li></ul></li>
    </ul>
    Dadurch löst sich dann aus meiner Sicht auch dein "Problem". Du wolltest mit diesen Klassen eine grafische Unterteilung per CSS erreichen, stimmts? Das brauchst Du nicht. Du musst das Menü wie oben gezeigt aufbauen, dann kannst Du es auch per CSS ohne Klassen stylen.
     

  3. #3
    Avatar von Starfox2007
    Starfox2007 Starfox2007 ist offline Mitglied Silber
    Registriert seit
    Apr 2010
    Beiträge
    87
    Den HTML Code habe ich nur im Beitrage falsch da ich mich vertippt habe.

    Ich habe inzwischen eine Lösung für mein Problem gefunden und in das obige Script Klassen eingefügt die ich dann genau im CSS ansprechen kann.

    Nur eine Frage hätte ich noch, wenn ich das NUR das erste Listenelement mit Hover ansprechen will was muss ich dann verwenden ?

    PHP-Code:
    ul a:hover ... 
    spricht alle UL Tags an, ich möchte mit Hover aber NUR das im HTML jeweils erste UL Tag ansprechen.
     

  4. #4
    Avatar von para_noid
    para_noid para_noid ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    144
    Sicher, dass du das erste ul ansprechen willst, nicht das erste li?

    Ich weiß nicht wie dein jetziges Script aussieht, aber du könntest bei der Menügenerierung dem ersten ul eine id zuweisen und die dann im CSS ansprechen.

    Unschöner, aber auch funktionierend, ist es, erst allen ul ein hover zuzuweisen und danach den Kinduls diese Formatierung wieder wegzunehmen, ungefähr so:

    Code :
    1
    2
    3
    4
    5
    6
    7
    
    ul:hover{
      background-color: red;
    }
     
    ul ul:hover{
      background-color: transparent;
    }

    Mir würde auch noch die Pseudoklasse firstchild einfallen, aber die hab ich noch nie auf ul benutzt und weiß von daher nicht, ob das überhaupt hinhaut.
     
    Für die Übereinstimmung von Niederschrift und Hirninhalt.

  5. #5
    Avatar von Starfox2007
    Starfox2007 Starfox2007 ist offline Mitglied Silber
    Registriert seit
    Apr 2010
    Beiträge
    87
    Ich hab mir jetzt ein eigenes PHP Script für die Menügestaltung geschrieben wo ich meine CSS Klassen gleich drin habe.

    PHP-Code:
    echo "<ul class='menue'>\n";
      
    // Datenbank auslesen
    $result $db->query("SELECT id, label, link, parent, class FROM tabelle ORDER BY sort");
    while (
    $menuelist $db->fetchassoc($result))
    {
        
        
    // Hauptmenü schreiben
        
    if($menuelist["parent"] == "0") {
        

    if(
    preg_match("/http/"$menuelist["link"])) {
        
           echo 
    "<li class='menue-".$menuelist["class"]."'><a href='".$menuelist["link"]."'><span>".$menuelist["label"]."</span></a></li>\n";
     
       }else{    
       
            if(
    $page == $menuelist["link"]) {
                    
           echo 
    "<li class='menue-".$menuelist["class"]."'><a class='menue-active' href='?page=".$menuelist["link"]."'><span>".$menuelist["label"]."</span></a></li>\n";

       }else{
                
            echo 
    "<li class='menue-".$menuelist["class"]."'><a href='?page=".$menuelist["link"]."'><span>".$menuelist["label"]."</span></a></li>\n";
                
                
            }

              }
     
                }
          
          

            }

    echo 
    "</ul>\n"
    Wenn mir jetzt noch einer sagen kann wie ich jetzt das Untermenü hier reinbekomme bin ich glücklich Hauptmenü ist mit Parent 0 gesetzt Untermenü ist an die ID des Hauptmenüs gebunden.

    id | parent | label
    ----------------------------------------------------------
    1 | 0 | home
    2 | 0 | news
    3 | 0 | impressum
    4 | 0 |
    5 | 0 |
    6 | 0 |
    7 | 2 |
     

  6. #6
    Avatar von Starfox2007
    Starfox2007 Starfox2007 ist offline Mitglied Silber
    Registriert seit
    Apr 2010
    Beiträge
    87
    Habs inzwischen hinbekommen.

    Vielen Dank nochmal an para_noid und threadi
     

Ähnliche Themen

  1. dynamisches Menü
    Von reuabreliz im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 08.04.08, 18:21
  2. Dynamisches Menü mit CSS
    Von StupidBoy im Forum CSS
    Antworten: 5
    Letzter Beitrag: 05.01.06, 19:04
  3. Dynamisches Menü
    Von melstyle im Forum Flash Plattform
    Antworten: 9
    Letzter Beitrag: 13.04.05, 11:46
  4. dynamisches Menü
    Von elgo im Forum PHP
    Antworten: 8
    Letzter Beitrag: 16.10.03, 19:38
  5. Dynamisches Menü (MX)
    Von Matthias Kannengiesser im Forum Flash Plattform
    Antworten: 16
    Letzter Beitrag: 19.11.02, 08:40