Menu dynamique

glodybiss Messages postés 509 Statut Membre -  
glodybiss Messages postés 509 Statut Membre -
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. Anoen Messages postés 200 Statut Membre 25
     
    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. glodybiss Messages postés 509 Statut Membre 9
       
      Merci
      0
  2. maka54 Messages postés 721 Statut Membre 80
     
    $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
  3. glodybiss Messages postés 509 Statut Membre 9
     
    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. Mihawk Messages postés 4753 Statut Contributeur 846
       
      Hello,

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