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. 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 ;)
    0
    1. Merci
      0
  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
    0
    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>';  
      ?>  
      0
      1. Contributeur
        Hello,

        Il faudrait m'expliquer l'utilité de la ligne : echo($i!=1)? '<li>':'<li>';
        0
      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.
        0
      3. Contributeur
        Ton site serait-il en ligne pour qu'on puisse "firebuguer" ça ?
        0
      4. Quoi ? il y a t-il des faille de sécurité ?
        0
      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
        0