2013-02-08 1 views
0

J'ai du mal à faire fonctionner ce menu correctement.PHP Menu - Chargement à partir de la base de données, impossible de structurer correctement

function writeMenu(){ echo "<div id=\"menu\">" <ul id=\"top-link\">"; m("top", "n"); echo "</ul></div>"; (désolé, il ne serait pas formater correctement)

function m($parent,$issub){ 
     $parentQ = "select * from cdi_menu";//gets menu items from menu table 
     $parentResult = mysql_query($parentQ); //runs menu item query and obtains result 
     while ($link = mysql_fetch_assoc($parentResult)) {//for each line in the result do the folowing: 
     if($parent==$link['PARENT']){//if the next link belongs to this menu item 
      echo "\n <li><a href=\"".$link['LINK']."\">".$link['DISPLAY']."</a></li>"; 
      if($issub=="n" && $link['HASCHILD']=="y"){//if this menu item is a top menu item 
      echo "\n <li id=\"sub-link\"><ul>"; 
      m($link['ID'], $links, "y"); 
      echo "\n </ul></li>"; 
      } 
     } 
     } 
    } 

    echo writeMenu(); 

Ce que je suis en train de faire est de faire où je peux masquer les ID « sous-link » (j'utiliser des classes, mais javascript ne semble pas modifier les styles de classe, juste les ID). Les éléments de sous-lien apparaîtraient lorsque sur un élément parent.

top fait référence aux éléments supérieurs et ID fait référence à l'ID unique dans la base de données.

Merci, désolé si c'est confus.

+0

N'utilisez pas mysql_ *. Regardez dans PDO, et MySQLi. En outre, utilisez une bibliothèque JavaScript comme jQuery. Vous pouvez sélectionner des classes de cette façon. –

+0

Aussi, quelle est la structure de votre table de base de données? Sans connaître les colonnes et leurs valeurs, il est difficile d'aider avec cela. –

+0

ID, PARENT, LINK, AFFICHAGE, HASCHILD est la structure. Je vais regarder dans ces 2. –

Répondre

1

Votre fonction a seulement deux paramètres, mais vous l'appelez avec 3 à l'intérieur

m($link['ID'], $links, "y"); 

liens $ est inutile.

Il serait préférable si vous modifiez la requête pour ressembler à ce

$parentQ = "select * from cdi_menu WHERE parent='$parent'"; 

si vous n'avez pas besoin d'abord si la déclaration et vous n'aller chercher toutes les lignes à plusieurs reprises pour chaque menu/sous-menu.

+0

Je l'ai retiré et j'ai changé le '$ parentQ'. Qu'est-ce qu'il fait est de sortir les 3 meilleurs liens, puis sur mouseover, je l'ai montrant/masquant les sous-liens. Il affiche actuellement l'ensemble du 1er lien supérieur –

+0

Cela signifie que cette instruction 'if ($ issub ==" n "&& $ link ['HASCHILD'] ==" y ")' échoue. La première condition est évidemment vraie alors vérifiez la valeur de haschild dans la base de données. – Gustek

Questions connexes