France Hardware : Forums de discussion - Découvrez notre nouveau comparateur d'offres Internet
Retrouvez les prix près de chez vous :  
Index du forum | Liste des membres | Liste des groupes | Inscription | F-A-Q | Recherche
Pseudo :    Password :     
29 511 membres enregistrés - 2 069 318 posts - 122 026 topics
Index des forums FH  | Index des forums DegroupNews
      Programmation
           Langages
                menu php/sql
90 connectés(record : 2799 le 29 May 2016 - 15 h 34)

Vous devez vous connecter pour répondre au topic.
1,2 | Suivant
menu php/sql

quaresma


Messages : 613
Inscrit le 22/05/04
Ville : Grenoble
Non connecté
  Posté le 20 October 2010 - 00 h 12 m 34 s
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/demo/menus/verticalderoulant2/#

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. 
3. 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. 
3. 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é [u]functions.js[/u] 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é [u]style.css[/u] 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. 
13. if( !isset($arrayFlag[$shopone['numrubrique']])) // On vérifie que le champ n'a pas été déjà affiché
14. {
15. 
16. print'
17. <div id="menu">
18.     <div class="menu" id="menu'.$shopone['numrubrique'].'" onclick="afficheMenu(this)">
19.         <a href="#">'.$nomrubrique2.'</a>
20.     </div>';
21.     
22. $arrayFlag[$shopone['numrubrique']] = true;} // On signale qu'on a affiché cette catégorie au moins une fois
23. 
24. print'<div id="sousmenu'.$shopone['numrubrique'].'" style="display:none">
25.         <div class="sousmenu">
26.             <a href="#">'.$nomssrubrique2.'</a>
27.         </div>
28.         </div>
29.         </div>';  
30.  }
31.  mysql_close();
32. ?>


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/site Fab/presentation.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.




Woofy
Totalement inutile, complètement indispensable

Messages : 31 539
Inscrit le 11/01/02
Ville : Lyon
Non connecté
  Posté le 20 October 2010 - 10 h 40 m 44 s
Là comme ça, je ne vois pas ce qui pose problème, par contre le code html généré n'est pas si bon que ça (2 div id="menu" par exemple).
Remonte la ligne suivante :
    Code     
1. <div id="menu">
avant le while (bon bien sur tu remet un echo ou un print), et met le </div> associé après la fin du while. Ensuite, fait du débug à l'ancienne si tu ne peux pas poser de points d'arrêt : juste après le while, fait un print_r($row01), histoire de voir quelles sont les lignes retournées par ta requête (pour plus de lisibilité, juste après, fait un continue pour n'exécuter que ça, et en regardant le code source de la page plutôt que le rendu de la page elle-même, ça sera plus lisible). Si tu vois toutes les lignes de ton menu retourné par la requête SQL, regarde si elles sont dans le bon ordre (suivant numrubrique donc), et pourquoi elles ne rentrent pas dans ton
    Code     
1. if( !isset($arrayFlag[$shopone['numrubrique']])
la première fois, et si la suite est effectuée.

Si tu n'as pas tout, c'est un problème dans la requête.





quaresma


Messages : 613
Inscrit le 22/05/04
Ville : Grenoble
Non connecté
  Posté le 20 October 2010 - 12 h 38 m 37 s


Le 20 octobre 2010 - 10 h 40, Woofy a écrit :
Là comme ça, je ne vois pas ce qui pose problème, par contre le code html généré n'est pas si bon que ça (2 div id="menu" par exemple).
Remonte la ligne suivante :
    Code     
1. <div id="menu">
avant le while (bon bien sur tu remet un echo ou un print), et met le </div> associé après la fin du while. Ensuite, fait du débug à l'ancienne si tu ne peux pas poser de points d'arrêt : juste après le while, fait un print_r($row01), histoire de voir quelles sont les lignes retournées par ta requête (pour plus de lisibilité, juste après, fait un continue pour n'exécuter que ça, et en regardant le code source de la page plutôt que le rendu de la page elle-même, ça sera plus lisible). Si tu vois toutes les lignes de ton menu retourné par la requête SQL, regarde si elles sont dans le bon ordre (suivant numrubrique donc), et pourquoi elles ne rentrent pas dans ton
    Code     
1. if( !isset($arrayFlag[$shopone['numrubrique']])
la première fois, et si la suite est effectuée.

Si tu n'as pas tout, c'est un problème dans la requête.




J'ai effectué les modifications que tu as dit.
cela retourne bien toutes les données, mais seulement les premiers sous-menus de chaque menus s'affichent :(
Cela doit être un problème dans la requête je pense.


Message édité 1 fois, la dernière par quaresma le 20 October 2010 - 13 h 14.


Woofy
Totalement inutile, complètement indispensable

Messages : 31 539
Inscrit le 11/01/02
Ville : Lyon
Non connecté
  Posté le 20 October 2010 - 13 h 27 m 36 s
Dans la ligne de debug juste en dessous du While, tu vois bien tout ?
Sinon, si tu vas directement dans la base de donnée, tu vois bien les infos (pour une base MySQL utilise par exemple MySQL Workspace, PHPMyAdmin ou sinon en ligne de commande sur le serveur).

Sinon reste la solution de Grabber.




quaresma


Messages : 613
Inscrit le 22/05/04
Ville : Grenoble
Non connecté
  Posté le 20 October 2010 - 13 h 39 m 26 s


Le 20 octobre 2010 - 13 h 27, Woofy a écrit :
Dans la ligne de debug juste en dessous du While, tu vois bien tout ?
Sinon, si tu vas directement dans la base de donnée, tu vois bien les infos (pour une base MySQL utilise par exemple MySQL Workspace, PHPMyAdmin ou sinon en ligne de commande sur le serveur).


Oui je vois tout.
Mais à l'écran, je n'ai seulement les premiers sous-menus de chaque menus qui s'affichent.




Woofy
Totalement inutile, complètement indispensable

Messages : 31 539
Inscrit le 11/01/02
Ville : Lyon
Non connecté
  Posté le 20 October 2010 - 14 h 10 m 57 s
Bon ben si tu as tout, c'est pas la requête alors ! ^^
Sinon au niveau de ton code, qu'est-ce qu'il se passe s'il y a une rubrique qui n'as pas de sous-rubrique ?




quaresma


Messages : 613
Inscrit le 22/05/04
Ville : Grenoble
Non connecté
  Posté le 20 October 2010 - 14 h 24 m 59 s


Le 20 octobre 2010 - 14 h 10, Woofy a écrit :
Bon ben si tu as tout, c'est pas la requête alors ! ^^
Sinon au niveau de ton code, qu'est-ce qu'il se passe s'il y a une rubrique qui n'as pas de sous-rubrique ?


De quoi cela oeut venir alors ?
Si tu veux jeter un coup d'oeil, là j'ai tout qui s'affiche mais le menu ne fonctionne pas :(

Sinon, le site est fait de façon à ce que tous les menus est un sous-menu :jap:




Woofy
Totalement inutile, complètement indispensable

Messages : 31 539
Inscrit le 11/01/02
Ville : Lyon
Non connecté
  Posté le 20 October 2010 - 14 h 46 m 25 s
Visiblement ce n'est pas le cas, les menus suivant n'ont pas de sous-menu :
("3", "+"),
("4", "Actualités"),
("5", "biographie");

Mais bon, ça plante avant on dirait.
Sinon peut-être qu'a la place du GROUP BY tu devrait mettre un ORDER BY ?




quaresma


Messages : 613
Inscrit le 22/05/04
Ville : Grenoble
Non connecté
  Posté le 20 October 2010 - 16 h 42 m 34 s


Le 20 octobre 2010 - 14 h 46, Woofy a écrit :
Visiblement ce n'est pas le cas, les menus suivant n'ont pas de sous-menu :
("3", "+"),
("4", "Actualités"),
("5", "biographie");

Mais bon, ça plante avant on dirait.
Sinon peut-être qu'a la place du GROUP BY tu devrait mettre un ORDER BY ?


En effet, c'est parce que je n'ai pas encore inséré les données dans la base.

Voici mon nouveau code :

    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 ss_rubrique.numrubrique = rubrique.numrubrique ORDER BY rubrique.numrubrique ASC, ss_rubrique.numssrubrique") or die ("impossible d'effectuer la requête");
 6. $arrayFlag = array();
 7. print'<div id="menu">';
 8. while($shopone = mysql_fetch_array($req)){
 9. $nomrubrique = stripslashes($shopone['nomrubrique']);
10. $nomssrubrique = stripslashes($shopone['nomssrubrique']);
11. $nomrubrique2 = utf8_encode($nomrubrique);
12. $nomssrubrique2 = utf8_encode($nomssrubrique);
13. if( !isset($arrayFlag[$shopone['numrubrique']])) // On vérifie que le champ n'a pas été déjà affiché
14. {
15. 
16. print'
17. 	<div class="menu" id="menu'.$shopone['numrubrique'].'" onclick="afficheMenu(this)">
18. 		<a href="#">'.$nomrubrique2.'</a>
19. 	</div>';
20. 	
21. $arrayFlag[$shopone['numrubrique']] = true;} // On signale qu'on a affiché cette catégorie au moins une fois
22. 
23. if( !isset($arrayFlag[$shopone['numrubrique']])) // On vérifie que le champ n'a pas été déjà affiché
24. {
25. 
26. print'<div id="sousmenu'.$shopone['numrubrique'].'" style="display:none">
27. 					<div class="sousmenu">
28. 					<a href="#">'.$nomssrubrique2.'</a>
29. 		</div>';  
30.  }else{
31.  print'<div class="sousmenu">
32. 					<a href="#">'.$nomssrubrique2.'</a>
33. 		</div>';  
34. 		}
35.  }
36. print'</div>';
37.  mysql_close();
38. ?>


Puis le résultat :

http://www.la-grange-sardieres.fr/site%20Fab/presentation.php




Woofy
Totalement inutile, complètement indispensable

Messages : 31 539
Inscrit le 11/01/02
Ville : Lyon
Non connecté
  Posté le 20 October 2010 - 17 h 16 m 57 s
C'est déjà mieux, tu as toutes tes données ! :)

Bon, sinon le javascript ne fonctionne pas, mais je pense que c'est ta disposition HTML qui fait ça.

Il faut que tu ouvre ton div sous-menu lorsque tu crée le premier item du sous-menu, et que tu le ferme lorsque tu ouvre un nouveau menu, et qu'il y a eu un item dans le sous-menu précédent.

Enfin, il faut également le fermer lorsque tu sors de la boucle s'il y a eu un sous-menu dans le dernier menu.




Woofy
Totalement inutile, complètement indispensable

Messages : 31 539
Inscrit le 11/01/02
Ville : Lyon
Non connecté
  Posté le 20 October 2010 - 17 h 59 m 39 s
Décidément grabber, tu fais remonter les gros trucs à côté desquels je suis passé ! ^^

Pour ta table, tu peux faire quelque chose de ce type :
MENU
[id (clé primaire, auto incrémentale),
nom,
photo,
parent]

Et pour les enregistrements :

    Code     
 1. INSERT INTO menu (id, nom, photo, parent) VALUES
 2. ("1", "écrits",'',''),
 3. ("2", "scènes",'',''),
 4. ("3", "+",'',''),
 5. ("4", "Actualités",'',''),
 6. ("5", "biographie",'',''),
 7. ('', "théâtre", "fototheatre.gif", "1"),
 8. ('', "enfance et jeunesse", "fotoenfance.gif", "1"),
 9. ('', "poésie", "fototheatre.gif", "1"),
10. ('', "traduction", "fototraduction.gif", "1"),
11. ('', "autres publications", "fotoautrespubli.gif", "1"),
12. ('', "saison 2010-2011", "fotosaison201011.gif", "2"),
13. ('', "saison 2009-2010", "fotosaison200910.gif", "2"),
14. ('', "archives", "fotoarchive.gif", "2");


Et pour la requête SQL :
SELECT `nom`,`photo`,`parent` FROM `menu` ORDER BY `parent`,`id`

Si jamais le null dans le parent ne va pas, met 0 par défaut.


Message édité 1 fois, la dernière par Woofy le 20 October 2010 - 18 h 01.


quaresma


Messages : 613
Inscrit le 22/05/04
Ville : Grenoble
Non connecté
  Posté le 20 October 2010 - 22 h 18 m 35 s


Le 20 octobre 2010 - 17 h 16, Woofy a écrit :
C'est déjà mieux, tu as toutes tes données ! :)

Bon, sinon le javascript ne fonctionne pas, mais je pense que c'est ta disposition HTML qui fait ça.

Il faut que tu ouvre ton div sous-menu lorsque tu crée le premier item du sous-menu, et que tu le ferme lorsque tu ouvre un nouveau menu, et qu'il y a eu un item dans le sous-menu précédent.

Enfin, il faut également le fermer lorsque tu sors de la boucle s'il y a eu un sous-menu dans le dernier menu.


Je suis vraiment perdu dans le code.
Pourriez-vous m'aider ?

Merci beaucoup




quaresma


Messages : 613
Inscrit le 22/05/04
Ville : Grenoble
Non connecté
  Posté le 21 October 2010 - 13 h 46 m 23 s
J'ai effectué encore des modifications sur le code, mais le résultat n'est pas encore celui voulu...:(

    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 ss_rubrique.numrubrique = rubrique.numrubrique ORDER BY rubrique.numrubrique ASC, ss_rubrique.numssrubrique") or die ("impossible d'effectuer la requête");
 6. $arrayFlag = array();
 7. print'<div id="menu">';
 8. while($shopone = mysql_fetch_array($req)){
 9. $nomrubrique = stripslashes($shopone['nomrubrique']);
10. $nomssrubrique = stripslashes($shopone['nomssrubrique']);
11. $nomrubrique2 = utf8_encode($nomrubrique);
12. $nomssrubrique2 = utf8_encode($nomssrubrique);
13. if( !isset($arrayFlag[$shopone['numrubrique']])) // On vérifie que le champ n'a pas été déjà affiché
14. {
15. 
16. print'
17. 	<div class="menu" id="menu'.$shopone['numrubrique'].'" onclick="afficheMenu(this)">
18. 		<a href="#">'.$nomrubrique2.'</a>
19. 	</div>
20. 	<div id="sousmenu'.$shopone['numrubrique'].'" style="display:none">';
21. 	
22. $arrayFlag[$shopone['numrubrique']] = true;} // On signale qu'on a affiché cette catégorie au moins une fois
23. 
24. print'
25. 					<div class="sousmenu">
26. 					<a href="#">'.$nomssrubrique2.'</a>
27. 		</div>';  
28. 
29.  }
30. 
31. print'</div>';
32.  mysql_close();
33. ?>



Pourriez-vous me donner un coup de pouce s'il vous plait ?
Je voudrai rester sur le modèle que j'avais pris.
Je suis sûr que le problème n'est pas énorme, mais je ne trouve pas d'où il provient :(

Merci




quaresma


Messages : 613
Inscrit le 22/05/04
Ville : Grenoble
Non connecté
  Posté le 21 October 2010 - 15 h 10 m 37 s


Le 21 octobre 2010 - 15 h 00, grabber a écrit :

alors déjà tout ça, tu vas le coller dans ton fichier de connexion, il est la pour ça, et ça n'a rien a faire dans tes pages.

    Code     
1. $db = mysql_connect($host_db,$login_db,$password_db) or die ("impossible de se connecter a la base".mysql_error());
2. mysql_select_db($name_db,$db) or die ("base inexistante".mysql_error());



D'accord.



pour le reste attend je regarde


Ok merci beaucoup.




Woofy
Totalement inutile, complètement indispensable

Messages : 31 539
Inscrit le 11/01/02
Ville : Lyon
Non connecté
  Posté le 21 October 2010 - 16 h 01 m 48 s
Ca fait même pas 1h, laisse le tester un peu ! :)




Woofy
Totalement inutile, complètement indispensable

Messages : 31 539
Inscrit le 11/01/02
Ville : Lyon
Non connecté
  Posté le 21 October 2010 - 16 h 50 m 56 s
Je me souviens de mes début, Sn@ke et Erel m'ont beaucoup soutenu.
On peut bien faire pareil maintenant !
Et puis il n'est pas forcé de tester sur le serveur de prod, il peut tester sur un serveur de dev local (style wamp).
Bref, faut que tu arrive à t'en sortir un peu tout seul aussi, et ne pas laisser grabber te macher tout le boulot ! :P

Grabber : même s'il n'utilise pas la meilleur méthode, c'est très formateur de débugger son code.
Enfin bon là le php "marche" mais génère du html pourri.
Il faut donc que tu trouve le html que tu souhaite générer pour adapter ton php en conséquence.




Woofy
Totalement inutile, complètement indispensable

Messages : 31 539
Inscrit le 11/01/02
Ville : Lyon
Non connecté
  Posté le 21 October 2010 - 18 h 04 m 55 s


Le 21 octobre 2010 - 17 h 50, grabber a écrit :
par contre evite les "SELECT * ", il ne faut jamais faire de "SELECT *", on ne ramène que ce que l'on a besoin pas tout, cela ne sert a rien et ça surcharge le moteur. prends cette habitude des maintenant ;)

Je plussois, et pour une raison très simple : si un jour tu décide de modifier ta table et d'ajouter un champ, une requête avec un SELECT * ne fonctionnera plus suivant ce qu'il y a derrière alors qu'une requête avec les champs que tu veux n'aura aucun problème, et tu ne devra pas modifier ton code php.
Et quand tu commence à avoir un gros site, avec des 10 aines de requêtes SQL (voir des 100 aines), plein de pages partout (ça viens vite), tu verra que ce n'est pas si mal de ne pas avoir à penser au code php lorsque tu modifie un peu ta base de donnée.




quaresma


Messages : 613
Inscrit le 22/05/04
Ville : Grenoble
Non connecté
  Posté le 21 October 2010 - 22 h 48 m 16 s
J'ai fait les modifications et tout s'affiche correctement.
Pour les problèmes de caractères, je les corrigeraient plus tard.

Cependant, il reste un petit soucis, j'aimerai également que lorsque que l'on clique sur un menu, le menu ouvert avant se ferme.

Pourriez-vous m'aider ? (encore)

Merci beaucoup et bonne soirée




quaresma


Messages : 613
Inscrit le 22/05/04
Ville : Grenoble
Non connecté
  Posté le 22 October 2010 - 11 h 59 m 26 s
Sallut,
tout d'abord, merci pour ta réponse.

Je viens de modifier le code.
Le menu ne fonctionne plus du tout.

Voici le code :

    Code     
 1. <div id="menu">
 2. <?php
 3. require("identification/connexion_sql.php");
 4. // on attaque le php ici
 5. // dans un premier temps on recupere les menus de niveau 1 donc ceux qui ont l'id_parent egal a 0
 6. $req1 = "SELECT id_menu, lib_menu FROM menus WHERE id_parent='0' ORDER BY ordre_menu" or die ("impossible d'effectuer la requête");
 7. $rep1 = mysql_query($req1);
 8. while($row1 = mysql_fetch_array($rep1)) {
 9. // on affiche le menu de niveau 1
10. echo "<div class=\"menu_niv1\" id=\"menu".$row1['id_menu']."\" onclick=\"afficheMenu(this.id)\"><a href=\"#\">".$row1['lib_menu']."</a></div>\n";
11. // ensuite on fait une seconde requete pour chercher les sous menus de ce niveau, s'il y en a on les affiche, sinon on ne fait rien
12. $req2="SELECT id_menu, lib_menu FROM menus WHERE id_parent='".$row1['id_menu']."' ORDER BY ordre_menu"  or die ("impossible d'effectuer la requête");
13. $rep2=mysql_query($req2);
14. $nb2=mysql_num_rows($rep2);
15. if (isset($nb2) && $nb2>0) {
16. echo "<div id=\"sousmenu".$row1['id_menu']."\" class=\"menu_niv2\">\n";
17. while ($row2=mysql_fetch_array($rep2)) {
18. echo '<a href="#">'.$row2['lib_menu'].'</a>\n';
19. }
20. echo "</div>\n";
21. }
22. }
23. ?>
24. </div>


Merci et bonne journée




quaresma


Messages : 613
Inscrit le 22/05/04
Ville : Grenoble
Non connecté
  Posté le 22 October 2010 - 20 h 50 m 45 s


Le 22 octobre 2010 - 16 h 59, quaresma a écrit :
c'est bizarre ce décalage

Edit : j'ai laissé le margin-top à 14px dans le CSS désolé.

Je suis encore au bar, je le mettrai sur le serveur ce soir.


J'ai modifié le CSS, mais le décalage existe toujours.

Sous IE, le menu ne fonctionne pas.




1,2 | Suivant
Page genérée en 0.6568 secondes par RahForum 2.0 | Gzip off |  Stats |  Metaforums |  RSS
© 2004 Cerbere Systems.
Prix Matériel Informatique | Informatique Lyon | Informatique Grenoble | Informatique Annecy | Informatique Marseille | Informatique Bordeaux | Forum Informatique
ADSL | Actualité ADSL | Deligo | Appareil photo | Commande Au Volant
Creative Commons
Message Boards and Forums Directory