Bonjour,
Je n'arrive pas à me sortir d'un problème.
Le but : monter un menu à arborescence cliquable à l'aide d'une fonction récursive sachant que les données du menu sont stockées en base.
Plus précisément, je souhaite dans un premier temps n'afficher que le premier niveau du menu. Quand je clique sur un lien, les liens du second niveau s'affichent. Quand je clique sur un lien du second niveau, les liens du troisième niveau s'affichent et ainsi de suite. Bien sûr, en cliquant sur un lien ouvert, celui-ci se referme, cachant les sous-menus lui correspondant.
J'espère que j'ai été clair...
La récursive fonctionne. Mes menus et sous-menus apparaissent bien mais ils sont tous ouverts et non cliquables. Mon problème c'est que je n'arrive pas à intégrer le Javascript me permettant de cacher, d'ouvrir et de fermer cette arborescence.
Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 $recherche=0; function recur($pere,$rang,$conn) // $conn est la connexion à la bdd { if($conn) { $sql = "select STRUC_LIBELLE, NIVEAU_NUM, decode(NIVEAU_CODE, 'DIR', '0','POLE', LIBELLE_D, 'SERV', LIBELLE_P,'CELL', LIBELLE_S, 'STRUCTU', LIBELLE_C, '-1') PARENT from STRUCTURE_HIERARCHIE2 where NIVEAU_NUM=".$rang; $stid = oci_parse($conn, $sql); $resultat=oci_execute($stid); $nblignes=oci_num_fields($stid); if($nblignes > 0)// si il y a au moins 1 resultat { while( $ligne=oci_fetch_array($stid, OCI_ASSOC) )// tant qu'il y a des lignes on affiche les enfants { $parent=$ligne["PARENT"]; $enfant=$ligne["STRUC_LIBELLE"]; if ($parent==$pere) { echo espace($rang),"<font color='blue'><b>".$enfant."</b></font><BR />"; recur($enfant,$rang+2,$conn); } } } } else { echo"Erreur de connexion"; } } recur($recherche,2,$conn);
Voilà. Les tests que j'ai faits pour intégrer le Javascript ne fonctionnent pas. Le problème vient de la récursive car le Javascript que j'utilise habituellement pour faire ce genre de menu contient des DIV qui s'imbriquent. Or avec la récursive, je ne vois pas du tout comment imbriquer ces DIV.
Qu'en pensez-vous ? Est-ce que j'essaye de faire quelque chose d'impossible ?
Merci.
Arnaud
Partager