olitax Posté 16 Octobre 2008 Posté 16 Octobre 2008 Bonsoir, Actuellement je suis entrain de créer une fonction pour mon site qui me permettra de gérer des pages et des onglets dirigeant vers cette page directement. Du coup j'utilise une fonction de ce type : <?phpfunction mafonction($url, $titre){echo $titre;include ($url);}mafonction ("bienvenue.php", "Bienvenue ICI");?> Bien sur le code a été simplifié, c'est le principe qui compte. Du coup, tout marche bien, le titre s'affiche, et la page aussi en général, mais, il y a un mais. En effet, si la page à includer contient des variable présente dans ma page PHP et non ma page bienvenue.php alors l'include ne fonctionne pas. Ainsi, si je fais une requete SQL, la variable de connexion SQL n'étant pas déclaré dans bienvenue dans PHP, ça ne marche pas. Je sais que les fonctions PHP ne transmettent pas les variables, sauf si je vais un "global". Donc il me faudrait une solution pour que les includes se passent comme si je les fessaient directement dans la page et non dans la fonction. Auriez-vous une solution ? (J'ai regardé les classes PHP, mais je ne sais pas si ça résoudrais mon problème ...). Merci Oli- ++
iNCiTE Web Posté 16 Octobre 2008 Posté 16 Octobre 2008 <?phpfunction mafonction($url, $titre){echo $titre;include ($url);}mafonction ("bienvenue.php", "Bienvenue ICI");?> Tu as beaucoup de variables à passer ? Si non, tu les passes via la fonction... <?phpfunction mafonction($url, $titre,$mavar){echo $titre;include ($url);}mafonction ("bienvenue.php", "Bienvenue ICI",$lavariable);?>
olitax Posté 17 Octobre 2008 Auteur Posté 17 Octobre 2008 Salut, Oui j'en ai beaucoup, en faite il faudrait que la fonction fonctionne pour beaucoup de page à includer, et chacune de ces pages ne requière pas les mêmes variables, du coup, je ne peux pas envoyer ma variable par les arguments, ni par global. En gros, ma fonction permettra d'accosier un design autour de cette page, auriez vous a la place d'une fonction un système (peut être template) pour pouvoir associer à chaque page un design autour ... Merci Oli- ++
cyberlaura Posté 17 Octobre 2008 Posté 17 Octobre 2008 Bonjour, comme ça, vite réfléchi, je penserais à la fonction eval, avec un code du style : $CodePhp='echo $titre;include ($url);';eval(php); Comme ça, tu ne serais plus dans la procédure...
olitax Posté 17 Octobre 2008 Auteur Posté 17 Octobre 2008 Bonsoir, Excellente idée, je n'y avais même pas pensé .... Par contre, n'est ce pas un peu bourrin ? Par contre, si je veux faire plusieurs includes, mais avec des pages includes différentes à includer et un titre différent dans la même page comment je peux faire pour redéfinir les variables $url et $titre sans redéfinir $CodePhp ? Merci encore, je sens que l'on est sur la bonne voie Oli- ++
cyberlaura Posté 20 Octobre 2008 Posté 20 Octobre 2008 (modifié) Bonjour Olitax, je ne sais pas si c'est "bourrin", à mon avis le eval est comme un include, mais sans fichier texte, tout en mémoire. D'ailleurs, tu pourrais aussi construire un fichier php de manière dynamique, et l'includer une fois sauvegardé : $CodePhp='echo $titre;include ($url);';file_put_contents('a_inclure.php',$CodePhp);include('a_inclure.php'); Par contre, je ne suis pas sur de comprendre ta seconde question : si tu veux faire plusieurs includes, il suffit à mon avis de les mettre à la suite : $CodePhp='echo $titre;include ($url);';$titre="Autre titre"$url="http://www.autre-url.com";$CodePhp.='echo $titre;include ($url);';eval($CodePhp); Modifié 20 Octobre 2008 par cyberlaura
Kioob Posté 20 Octobre 2008 Posté 20 Octobre 2008 Excellente idée, je n'y avais même pas pensé .... Par contre, n'est ce pas un peu bourrin ? Moi je vois surtout deux trucs "bourrins" : - le verbe "includer" qui pique les yeux - le fait d'avoir "plein" de variables globales à "transmettre"... les variables globales "c'est le mal". A partir de là toutes les solutions paraîtront forcément "bourrines", le contexte l'obligeant.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant