Ce forum est maintenant fermé, seule cette archive statique reste consultable.
  FORUM Rue-Montgallet.com
  Programmation
  Php - Sql

  menu en php/sql

Bas de page
Auteur Sujet :

menu en php/sql

n°20014
quaresma
Profil : Membre
Posté le 20-10-2010 à 00:15:17  
 

Bonjour a toutes et tous,
je voulais savoir si quelqu'un pouvait m'aider à faire un menu en PHP/SQL comme celui-ci :
 
http://css.developpez.com/galerie/ [...] roulant2/#
 
En récupérant les titres "menu1","menu1",etc. à partir d'une SGBD SQL et les sous-menu également.
 
J'ai des notions en php/sql, il me faudrait juste un petit coup de pouce s'il vous plait.
 
J'ai deux tables comme cela :
 

Code :
  1. CREATE TABLE rubrique (numrubrique INT not null, nomrubrique VARCHAR (20) NOT NULL, PRIMARY KEY (numrubrique));
  2. CREATE TABLE ss_rubrique (numssrubrique INT not null AUTO_INCREMENT, nomssrubrique VARCHAR (40) NOT NULL, photossrubrique VARCHAR (40), numrubrique INT not null, PRIMARY KEY (numssrubrique));


 
Elles contiennent les données suivantes :
 

Code :
  1. INSERT INTO rubrique (numrubrique, nomrubrique) VALUES ("1", "écrits" ), ("2", "scènes" ), ("3", "+" ), ("4", "Actualités" ), ("5", "biographie" );;
  2. INSERT INTO ss_rubrique (numssrubrique, nomssrubrique, photossrubrique, numrubrique) VALUES ("1", "théâtre", "fototheatre.gif", "1" ), ("2", "enfance et jeunesse", "fotoenfance.gif", "1" ), ("3", "poésie", "fototheatre.gif", "1" ), ("4", "traduction", "fototraduction.gif", "1" ), ("5", "autres publications", "fotoautrespubli.gif", "1" ), ("6", "saison 2010-2011", "fotosaison201011.gif", "2" ), ("7", "saison 2009-2010", "fotosaison200910.gif", "2" ), ("8", "archives", "fotoarchive.gif", "2" );


 
J'ai trois fichiers.
 
Un fichier appelé functions.js qui contient la fonction pour le menu :
 

Code :
  1. function afficheMenu(obj){
  2.    
  3.     var idMenu     = obj.id;
  4.     var idSousMenu = 'sous' + idMenu;
  5.     var sousMenu   = document.getElementById(idSousMenu);
  6.    
  7.     /*****************************************************/
  8.     /**    on cache tous les sous-menus pour n'afficher    **/
  9.     /** que celui dont le menu correspondant est cliqué **/
  10.     /** où 4 correspond au nombre de sous-menus         **/
  11.     /*****************************************************/
  12.     for(var i = 1; i <= 20; i++){
  13.         if(document.getElementById('sousmenu' + i) && document.getElementById('sousmenu' + i) != sousMenu){
  14.             document.getElementById('sousmenu' + i).style.display = "none";
  15.         }
  16.     }
  17.    
  18.     if(sousMenu){
  19.         //alert(sousMenu.style.display);
  20.         if(sousMenu.style.display == "block" ){
  21.             sousMenu.style.display = "none";
  22.         }
  23.         else{
  24.             sousMenu.style.display = "block";
  25.         }
  26.     }
  27.    
  28. }


 
 
Un fichier nommé style.css qui contient les styles pour le menu :
 

Code :
  1. *{
  2.     margin:0;
  3.     padding:0;
  4. }
  5. #menu{
  6.     width:150px;
  7.     margin:20px auto 0 auto;
  8. }
  9. .menu, .sousmenu{
  10.     text-align:center;
  11. }
  12. .menu{
  13.     height:18px;
  14.     width:150px;
  15.     padding:2px 0;
  16.     background:#404040;
  17.     color:#fff;
  18. }
  19. .sousmenu{
  20.     height:18px;
  21.     width:150px;
  22.     padding:1px 0;
  23.     background:#808080;
  24.     color:#fff;
  25. }
  26. .menu a{
  27.     display:block;
  28.     width:100%;
  29.     height:100%;
  30.     color:#fff;
  31.     font-family:arial,sans-serif;
  32.     font-size:12px;
  33.     font-weight:bold;
  34.     text-decoration:none;
  35.     background:#404040;
  36. }
  37. .sousmenu a{
  38.     display:block;
  39.     width:100%;
  40.     height:100%;
  41.     color:#123456;
  42.     font-family:arial,sans-serif;
  43.     font-size:12px;
  44.     font-weight:bold;
  45.     text-decoration:none;
  46. }
  47. .menu a:hover, .sousmenu a:hover, .menu a:active, .sousmenu a:active, .menu a:focus, .sousmenu a:focus{
  48.     color:#654321;
  49. }


 
 
La page sur laquelle j'appelle le menu dynamiquement ainsi que les fichiers "functions.js" et "style.css"  :
 

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <meta name="robots" content="index, follow" />
  6. <meta name="keywords" content=" />
  7. <meta name="description" content=" />
  8. <title></title>
  9.      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  10.      <link rel="stylesheet" href="menu/style.css" type="text/css" />
  11.      <script type="text/javascript" src="menu/functions.js"></script>
  12. </head>
  13. <body>
  14. <table width="900" height="421" border="0" align="center" bgcolor="#000000">
  15.   <tr>
  16.     <td width="22">&nbsp;</td>
  17.     <td width="145" valign="top"><br />
  18.     <?php include"menu/menu.php" ?>; </td>
  19.     <td width="682" valign="top"><br />


 
 
Puis, le fichier du menu :
 

Code :
  1. <?php
  2. require("identification/connexion_sql.php" );
  3. $db = mysql_connect($host_db,$login_db,$password_db) or die ("impossible de se connecter a la base".mysql_error());
  4. mysql_select_db($name_db,$db) or die ("base inexistante".mysql_error());
  5. $req = mysql_query("SELECT * FROM rubrique, ss_rubrique WHERE rubrique.numrubrique = ss_rubrique.numrubrique GROUP BY rubrique.numrubrique" ) or die ("impossible d'effectuer la requête" );
  6. $arrayFlag = array();
  7. while($shopone = mysql_fetch_array($req)){
  8. $nomrubrique = stripslashes($shopone['nomrubrique']);
  9. $nomssrubrique = stripslashes($shopone['nomssrubrique']);
  10. $nomrubrique2 = utf8_encode($nomrubrique);
  11. $nomssrubrique2 = utf8_encode($nomssrubrique);
  12. if( !isset($arrayFlag[$shopone['numrubrique']])) // On vérifie que le champ n'a pas été déjà affiché
  13. {
  14. print'
  15. <div id="menu">
  16.     <div class="menu" id="menu'.$shopone['numrubrique'].'" onclick="afficheMenu(this)">
  17.         <a href="#">'.$nomrubrique2.'</a>
  18.     </div>';
  19.    
  20. $arrayFlag[$shopone['numrubrique']] = true;} // On signale qu'on a affiché cette catégorie au moins une fois
  21. print'<div id="sousmenu'.$shopone['numrubrique'].'" style="display:none">
  22.         <div class="sousmenu">
  23.             <a href="#">'.$nomssrubrique2.'</a>
  24.         </div>
  25.         </div>
  26.         </div>'; 
  27. }
  28. mysql_close();
  29. ?>


 
Pour l'instant, le résultat n'est pas terrible comme vous pourrez le constater, toutes les données n'apparaissent pas :
 
http://www.la-grange-sardieres.fr/ [...] tation.php
 
Je voudrai le même résultat que le menu pris en exemple, mais dans ce que j'ai fait il y a quelque chose qui ne va pas.
 
Merci beaucoup pour votre aide.

mood
Pub
Posté le 20-10-2010 à 00:15:17  
 

  FORUM Rue-Montgallet.com
  Programmation
  Php - Sql

  menu en php/sql

© 2000-2024 Forum.rue-montgallet.com - Tous droits réservés