Page 1 sur 1

menu vertical développable avec css

Posté : 22 août 2006, 17:18
par gregius
njour,

J'ai actuellement un menu vertical statique avec des liens du style index.php?id_page=100

Mes pages sont donc toutes reprises dans une table sql "table" avec les colonnes suivantes "ID, titre, mots-clés, descriptions,contenu, id_parent"
le contenu reprenant le liens absolu de la page

J'aimerai que ce menu deviennent dynamique c'est à dire que le menu se développe à l'endroit de la page en cours et qu'il ferme les autres menu.
mon site se trouve à l'adresse suivante : http://cpdt.wallonie.be
Les solutions javascript que j'ai essayée permettait au menu de développer plus ou moins les différentes parties, mais il refermait tout dès qu'on chargeait une page étant donné que c'est une structure php avec la partie menu qui est incluse dans l'index.
Il faudrait qu'il retienne l'id de la page du lien cliqué et qu'il s'ouvre à cet endroit...

Quelqu'un pourrait-il m'aider... ça doit être un truc avec des get et post m'a-t-on dit mais je n'y comprend rien...
MErci

Je pensais à un menu du style :

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Vertical expanding menu</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <script type="text/javascript"> <!-- window.onload=montre; function montre(id) { var d = document.getElementById(id); for (var i = 1; i<=10; i++) { if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';} } if (d) {d.style.display='block';} } //--> </script> <style type="text/css"> /* CSS from toturials of www.alsacreations.com/articles */ <!-- body { margin: 0; padding: 0; background: white; font: 80% verdana, arial, sans-serif; } dl, dt, dd, ul, li { margin: 0; padding: 0; list-style-type: none; } #menu { position: absolute; top: 0; left: 0; } #menu { width: 15em; } #menu dt { cursor: pointer; margin: 2px 0;; height: 20px; line-height: 20px; text-align: center; font-weight: bold; border: 1px solid gray; background: #ccc; } #menu dd { border: 1px solid gray; } #menu li { text-align: center; background: #fff; } #menu li a, #menu dt a { color: #000; text-decoration: none; display: block; border: 0 none; height: 100%; } #menu li a:hover, #menu dt a:hover { background: #eee; } .mentions { position: absolute; top : 300px; left : 10px; color: #000; background-color: #ddd; } --> </style> </head> <body> <dl id="menu"> <dt onclick="javascript:montre();"><a href="#">Menu 1</a></dt> <dt onclick="javascript:montre('smenu2');">Menu 2</dt> <dd id="smenu2"> <ul> <li><a href="#">Sub Menu 2.1</a></li> <li><a href="#">Sub Menu 2.2</a></li> <li><a href="#">Sub Menu 2.3</a></li> </ul> </dd> <dt onclick="javascript:montre('smenu3');">Menu 3</dt> <dd id="smenu3"> <ul> <li><a href="#">Sub Menu 3.1</a></li> <li><a href="#">Sub Menu 3.1</a></li> <li><a href="#">Sub Menu 3.1</a></li> <li><a href="#">Sub Menu 3.1</a></li> <li><a href="#">Sub Menu 3.1</a></li> <li><a href="#">Sub Menu 3.1</a></li> </ul> </dd> <dt onclick="javascript:montre('smenu4');">Menu 4</dt> <dd id="smenu4"> <ul> <li><a href="#">Sub Menu 4.1</a></li> <li><a href="#">Sub Menu 4.1</a></li> </ul> </dd> </dl> <div class="mentions">Raphaël GOETTER<br /> <a href="http://www.alsacreations.com">Alsacréations</a><br /> <a href="http://tutorials.alsacreations.com/deroulant/">Explanations</a></div> </body> </html>

Merci d'avance

Gregius le néophyte

Posté : 23 août 2006, 09:54
par gregius
up...
personne n'aurait une petite idée?
où bien est-ce que mon code est décourageant :-)

Posté : 28 août 2006, 10:30
par gregius
up...
personne n'aurait une petite idée?
où bien est-ce que mon code est décourageant :-)
up??

Posté : 28 août 2006, 11:36
par Cyrano
Modération : gregius, les "up" sont interdits ici. Si personne n'a répondu, c'est que personne n'a de réponse.
J'ajouterais que ce code ressemble fortement à un code vu sur le site Alsacreations : as-tu songé à poser la même question sur le forum d'alsacreations ?

Posté : 28 août 2006, 14:46
par gregius
Modération : gregius, les "up" sont interdits ici. Si personne n'a répondu, c'est que personne n'a de réponse.
J'ajouterais que ce code ressemble fortement à un code vu sur le site Alsacreations : as-tu songé à poser la même question sur le forum d'alsacreations ?
Ben oui, j'ai essayé, mais personne n'a su m'aider, c'est pour ça que je me tourne vers ce forum qui me semblait plus actif...
C'est bizarre, j'ai pas l'impression de demander un truc chinois mais étant donné que c'est du php, je ne sais pas pomper le code sur des sites qui utiliseraient la technique que j'aimerais appliquer...

Posté : 28 août 2006, 14:54
par Cyrano
Alors peut-être bien que ta question est mal formulée : j'ai bien une vague idée de ce que tu veux obtenir, mais il serait préférable que tu précises, on évitera les spéculations inutiles...

Re: menu vertical développable avec css

Posté : 28 août 2006, 15:03
par gregius
Donc,
mon menu est statique pour l'instant, avec des rubriques et des sous-rubriques. Elles sont toutes actives et pointes vers une ligne d'une table (sql)de liens. Cette table a été créée dans le but d'avoir une gestion dynamique du site (notamment pour l'arborescence).

Cette table 'pages' à la structure suivante : "ID,titres,mots-clés,descriptions,contenu, ID_parent" (la colonne contenu reprenant le lien absolu de la page)

J'aimerai que les sous-rubriques ne s'affichent pas par défaut, qu'elles soient cachée et qu'il faille cliquer sur la rubrique pour que les sous-rubriques apparaissent. Donc le clic sur une rubrique enverrait l'info vers le serveur qui recompilerait toute la page avec le menu ouvert au bon endroit en plus du contenu dans la partie centrale.
Toutes les solutions javascript refermaient le menu étant donné qu'elles le rechargeaient...
J'espère avoir été plus clair sur mon problème..;
On m'a dit qu'il fallait faire cela avec des get et des post, mais j'ai du mal...

Greg

:?

Posté : 28 août 2006, 15:12
par Cyrano
Tu pourrais très bien faire ça avec JavaScript, mais il faudrait d'une part modifier légèrement le script et ensuite envoyer un paramètre au chargement de la page pour déployer la bonne rubrique lorsqu'une page correspondante est ouverte. Et tu pourrais définir ce paramètre en PHP pour le générer dans le code JavaScript lorsque tu crée la page.

Par exemple :
-1- tu définis quelle page est appelée;
-2- tu peux donc définir quel paramètre il faudrait envoyer à la fonction JavaScript pour forcer la rubrique en question si nécessaire à rester ouverte;
-3- tu génères ton code avec dans ta balise body un évènement onload="" pour appeler la fonction.

Ça n'empèchera pas le système de fonctionner pour les autres liens.

Posté : 28 août 2006, 15:18
par gregius
Tu pourrais très bien faire ça avec JavaScript, mais il faudrait d'une part modifier légèrement le script et ensuite envoyer un paramètre au chargement de la page pour déployer la bonne rubrique lorsqu'une page correspondante est ouverte. Et tu pourrais définir ce paramètre en PHP pour le générer dans le code JavaScript lorsque tu crée la page.

Par exemple :
-1- tu définis quelle page est appelée;
-2- tu peux donc définir quel paramètre il faudrait envoyer à la fonction JavaScript pour forcer la rubrique en question si nécessaire à rester ouverte;
-3- tu génères ton code avec dans ta balise body un évènement onload="" pour appeler la fonction.

Ça n'empèchera pas le système de fonctionner pour les autres liens.
C'est bien ça, le hic, c'est que je suis une vrai brelle en php... et donc, très rude à réaliser pour moi..., ne saurais-tu pas me montrer l'exemple sur le code que j'ai mis au-dessus?

Posté : 28 août 2006, 15:23
par Cyrano
et donc, très rude à réaliser pour moi..., ne saurais-tu pas me montrer l'exemple sur le code que j'ai mis au-dessus?
Et en fin de compte te faire ton code ? Et comment apprendras-tu si tu n'essayes pas toi-même ? Commence, tu feras peut-être des erreurs, mais tu n'apprendras que comme ça et petit à petit, tu deviendras autonome. Si on te fait ton code, tu seras toujours dépendant des autres. Commence par essayer de formuler le structure et essaye quelques lignes de code. Fouille les documentations et le forum et si tu bloques, montre-nous ce que tu as fait qu'on puisse t'indiquer ce qui cloche et comment le corriger.