Bonjour !
J'utilise la class vtemplate pour mon site.
Pour ceux qui ne connaissent pas : je déclare des variables {#VAR} dans mon html que je valorise dans mon php :
J'aimerai créer un menu dynamique en récupérant les différents liens du menu via ma base de données.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $vtp_menu->setVar($_menu,"VAR", 'DuContenu' );
Pour obtenir menus/sous-menus/sous sous menus (l'arborescence complète quoi), j'ai créé une fonction récursive :
Je souhaiterai ensuite mettre le résultat de cette fonction dans mon html (dans ma variable {#MENU}.
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 function RecursiveMenu($origine) { $i = 0; $req = 'SELECT * FROM Menus WHERE Menu_origine ='.$origine; $res = mysql_query($req); $nb = mysql_num_rows($res); while($row = mysql_fetch_array($res)) { // Titre catégorie if($row['Menu_origine'] == 0) echo '<li><a href="">'.$row['Menu_nom'].'</a>'; else { // Si premier lien d'un sous menu if($i == 0) { echo '<ul><li><a href="'.$row['Menu_url'].'">'.$row['Menu_nom'].'</a></li>'; } else echo '<li><a href="'.$row['Menu_url'].'">'.$row['Menu_nom'].'</a></li>'; // Si dernier lien d'un sous menu if($i == ($nb-1)) echo '</ul></li>'; } $i++; RecursiveMenu($row['Menu_id']); } }
J'ai donc fait :
Le problème étant que les echo de ma fonction font que mon menu ne s'affiche pas dans la variable {#MENU} mais tout en haut de ma page html.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $vtp_menu->setVar($_menu,"MENU.MENU", RecursiveMenu(0) );
Alors comment pourrais-je récupérer dans une variable tout le résultat de ma fonction pour ensuite le mettre dans ma variable {#MENU} ?
Si je mets un $reponse = ''; en haut de ma fonction et que j'ajoute mon menu dedans, ça ne fonctionnera pas comme la variable sera remise à vide à chaque fois que j'ai un sous menu :/ (appel à la fonction dans la fonction -> récursivité quoi ^^)
Un peu d'aide ne serait pas de trop, merci !
Partager