Menu dynamique

Bonjour,

J'aimerai afficher un menu mais il y a une erreur que je n'arrive pas à comprendre veillez s'il vous plait vérifer et m'aider. Merci.

Voici les erreurs :

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\wamp\www\internetService\menu_page2.php on line 19


    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\internetService\menu_page2.php on line 22


Voici l'arborescence dans la base des données :

|------ 
|Colonne|Type|Null|Défaut 
|------ 
|//**id**//|int(11)|Non| 
|parent_menu|int(11)|Non| 
|menu|varchar(100)|Non| 
|url|varchar(255)|Non| 
|titre|varchar(200)|Non| 
|description|varchar(200)|Non| 
|mot_cles|varchar(200)|Non| 
== Contenu de la table menu_site 

|1|1|Accueil| | | |  
|2|1|Site manage| | | |  
|3|1|Clients| | | |  
|4|1|Agents| | | |  
|5|1|Myaccount| | | |  
|6|2|Nouveau site| | | |  
|7|2|Afficher Site| | | |  
|8|2|Paramèttre Site| | | |  
|9|2|Tous les clients| | | |  
|10|2|Recemments ajouter| | | |  
|11|2|Nouveau client| | | |  
|12|2|Paramèttre client| | | |  
|13|2|Liste Agents| | | |  
|14|2|Modifier agent| | | |  
|15|2|Ajouter agent| | | |  
|16|2|Modifier infos| | | |  
|17|2|Afficher infos| | | |  
|18|2|Supprimer compte| | | |  


Voici le code :

<?php  
// information pour la connection à le DB 
$host = 'localhost'; 
$user = 'root'; 
$pass = ''; 
$db = 'cybernetdata';  
// connection à la DB 
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); 
mysql_select_db($db) or die ('Erreur :'.mysql_error());  

$query = "SELECT * FROM 'menu_site' WHERE parent_menu=0";   
 $result = mysql_query($query);  
   $n1=mysql_num_rows($result); 
 $i=0;   
echo '<ul>'; 
while ($row = mysql_fetch_array($result)) {    
   $sql = "SELECT * FROM 'menu_site' WHERE id_parent =".$row['menu']."";   
   $sousmenu = mysql_query($sql);  
   $n2=mysql_num_rows($sousmenu); 
   echo($i!=1)? '<li>':'<li  class="last">'; 
   if($n2>0){ 
   echo'<a href="'.$row['url'].'" class="parent"><span>'.$row['menu'].'</span></a>'; 
 echo'<div class="columns two">'; 
  echo '<ul class="one">'; 
   while ($ssmenu = mysql_fetch_array($sousmenu)) {   
   echo '<li><a href="'.$ssmenu['url'].'"><span>'.$ssmenu['menu'].'</span></a></li>';   
  } 
  echo '</ul>';   
 echo '</div>'; 
 } 
 else{ 
 echo ' <a href="'.$row['url'].'"><span>'.$row['menu'].'</span></a>'; 
 } 
 echo '</li>'; 
$i++; 
} 
echo '</ul>';   
?>    


3 réponses

  1. Merci à tous j'ai trouvé une solution le menu s'affiche maintenant mais il y a un problème quand j'essaie d'afficher il m'affiche seulement les parents sur le menu déroulant quand je place la souris au lieu d'afficher les enfants du menu (sous menu)

    Voci les codes

    <?php 
    // information pour la connection à le DB
    $host = 'localhost';
    $user = 'root';
    $pass = '';
    $db = 'cybernet'; 
    // connection à la DB
    $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
    mysql_select_db($db) or die ('Erreur :'.mysql_error()); 
    
    $query = "SELECT * FROM 'menu_site' WHERE parent_menu=1";  
    	$result = mysql_query($query); 
       $n1=mysql_num_rows($result);
    	$i=0;  
    	echo '<div id="menu">';
    echo '<ul>';
    while ($row = mysql_fetch_array($result)) {   
       $sql = "SELECT * FROM 'menu_site' WHERE parent_menu=".$row['1']."";  
       $sousmenu = mysql_query($sql); 
       $n2=mysql_num_rows($sousmenu);
       echo($i!=1)? '<li>':'<li>';
       if($n2>0){
       echo'<a href="'.$row['url'].'"><span>'.$row['menu'].'</span></a>';
    		echo '<ul>';
    			while ($ssmenu = mysql_fetch_array($sousmenu)) {  
    			echo '<li><a href="'.$ssmenu['url'].'">'.$ssmenu['menu'].'</a></li>';  
    		}
    		echo '</ul>';  
    	}
    	else{
    	echo ' <a href="'.$row['url'].'"><span>'.$row['menu'].'</span></a>';
    	}
    	echo '</li>';
    $i++;
    }
    echo '</ul>';echo '</div>';  
    ?>  
    1. Contributeur
      Hello,

      Il faudrait m'expliquer l'utilité de la ligne : echo($i!=1)? '<li>':'<li>';
    2. Il n'a aucune importance je l'avais utiliser pour un autre code source mais quand j'essaie de l'enlever je perd toute la mise en forme et tout le menu apparait maintenant.
    3. Contributeur
      Ton site serait-il en ligne pour qu'on puisse "firebuguer" ça ?
    4. Quoi ? il y a t-il des faille de sécurité ?
    5. Contributeur
      Non ! Firebug est un outil de Mozilla Firefox permettant d'analyser en temps réel sur la page le code HTML afin de détecter les erreurs
  2. $query = "SELECT * FROM 'menu_site' WHERE parent_menu=0";   

    si c'est des simples quotes (touche 4 du clavier) qui entourent ton nom de table, c'est faux
    1. Bonjour,

      Tu as une erreur dans ta requête ici :
      $sql = "SELECT * FROM 'menu_site' WHERE id_parent =".$row['menu'].""; 


      Trop de concaténation tue la concaténation ;)
      1. Merci