par
sadeq » 17 avr. 2007, 14:14
Oui, guilt92 a raison, la solution la plus logique est :
<?php
if(isset($d[0]) && isset($d[1]) && isset($d[2])) {
echo menu_right($d[0], $d[1], $d[2]);
}
?>
d'autant plus que la fonction menu_right doit exiger les trois paramètes et dans l'ordre (ce que ton code ne respecte pas).
Enfin, si tu tiens à ta solution, c'est la fonction eval() qui permet d'exécuter du code php stocké dans une chaîne.
Enlève alors les
<? et
?> de la chaîne $menu_droite et fait un eval($menu_droite)
Comme ça:
$menu_droite= "echo menu_right(";
// rechercher les différentes valeurs
if (isset($d[0])) { $menu_droite.="'$d[0]', ";} else $menu_droite.=" null, "; // Si elle existe il l'inscrit sinon vide
if (isset($d[1])) { $menu_droite.="'$d[1]', ";} else $menu_droite.=" null, "; // Si elle existe il l'inscrit sinon vide
if (isset($d[2])) { $menu_droite.="'$d[2]', ";} else $menu_droite.=" null, "; // Si elle existe il l'inscrit sinon vide
$menu_droite=substr($menu_droite,0,-2); // ici j'enlève la virgule finale
$menu_droite.="); ";
eval ($menu_droite); // et la enfin je l'exécute
Mais ceci n'est vrai que si tous les paramètres de la fonction "menu_right" sont facultatifs
Oui, guilt92 a raison, la solution la plus logique est :
[php]<?php
if(isset($d[0]) && isset($d[1]) && isset($d[2])) {
echo menu_right($d[0], $d[1], $d[2]);
}
?>
[/php]
d'autant plus que la fonction menu_right doit exiger les trois paramètes et dans l'ordre (ce que ton code ne respecte pas).
Enfin, si tu tiens à ta solution, c'est la fonction eval() qui permet d'exécuter du code php stocké dans une chaîne.
Enlève alors les [b]<?[/b] et [b]?>[/b] de la chaîne $menu_droite et fait un eval($menu_droite)
Comme ça:
[php]$menu_droite= "echo menu_right(";
// rechercher les différentes valeurs
if (isset($d[0])) { $menu_droite.="'$d[0]', ";} else $menu_droite.=" null, "; // Si elle existe il l'inscrit sinon vide
if (isset($d[1])) { $menu_droite.="'$d[1]', ";} else $menu_droite.=" null, "; // Si elle existe il l'inscrit sinon vide
if (isset($d[2])) { $menu_droite.="'$d[2]', ";} else $menu_droite.=" null, "; // Si elle existe il l'inscrit sinon vide
$menu_droite=substr($menu_droite,0,-2); // ici j'enlève la virgule finale
$menu_droite.="); ";
eval ($menu_droite); // et la enfin je l'exécute
[/php]
Mais ceci n'est vrai que si tous les paramètres de la fonction "menu_right" sont facultatifs