problème include

Eléphant du PHP | 73 Messages

08 juil. 2011, 17:42

Bonjour,

J'essaye de faire un truc qui me parraît simple mais cela ne fonctionne pas, j'imagine qu'il doit y avoir un "truc" pour que cela fonctionne.. pouvez-vous m'aider ? je vous en serait reconnaissant :)

en fait j'ai tout bêtement un include dans ma page :

include ('../../header.php');

j'aimerais passer un paramètre à cet include, comme ceci :

include ('../../header.php?title=Systechpatches');

mais cela ne fonctionne pas et m'envoie une erreur du type :

Warning: include(../../header.php?title=Systechpatches) [function.include]: failed to open stream: No such file or directory in /app/ubskonsole/mods/supervision/systechpatches.php on line 7

alors que si j'appelle la page directement dans le browser avec le paramètre (header.php?title=Systechpatches), ça fonctionne très bien, ma page s'affiche bien, et m'affiche bien mon paramètre (je fais un simple echo de la variable récupérée avec un $_GET['title'] qui s'affiche bien)

qu'est-ce que je fais de mal ?

merci par avance,

Eléphant du PHP | 209 Messages

08 juil. 2011, 18:18

A priori, on ne peut pas mettre de paramètres dans un include.

Par contre, toutes les variables qui existent avant le include existerons lors de l'inclusion.

Si tu fais
$title = $_GET['title']; 
include("../../header.php");
alors, $title sera défini à l'intérieur de header.php

Ce n'est toutefois pas une bonne pratique, et j'imagine que ton problème doit pouvoir se régler plus simplement et plus proprement.

Donc... pourquoi veux-tu faire cela ?
--
Eric

Eléphant du PHP | 73 Messages

11 juil. 2011, 09:01

salut

j'ai testé de définir une variable avant le include, et ça ne fonctionne pas.
quand je fais un echo de la variable dans la page header, la variable est vide.

sinon pourquoi je fais ça, tout simplement car actuellement sur chacune de mes pages, je fais un include du header du site, et quand je change de page, suivant le type de page, le header doit afficher un titre correspondant à la page en cours, donc j'aimerais simplement envoyer une variable depuis ma "page" vers le "header" en haut de la page (qui est un include).

PI, j'ai testé ça :

dans ma page :

$page_title = "Systechpatches";
include ('../../header.php');

et dans mon header :

$page_title = $_GET['page_title'];
echo $page_title;

rien ne s'affiche.

cdt, merci de ton aide

ViPHP
xTG
ViPHP | 7331 Messages

11 juil. 2011, 09:22

$_GET['pagetitle']...
Là c'est un souci de logique... :non:

Code : Tout sélectionner

$_GET['pagetitle'] = "Systechpatches"; include ('../../header.php'); 
Mais c'est assez moche de modifier le tableau super-global.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

11 juil. 2011, 10:23

Pourquoi modifier la super globale ? Comme l'indique olivierg, lorsque tu inclus un script dans une page php, ce dernier interprête l'ensemble du code comme s'il ne s'agissait que d'un seul et même script :

donc si dans ta page tu déclares une variable :
$page_title = "Systechpatches";
include ('../../header.php');
dans tes pages incluses après la déclaration, tu peux exploiter cette variable :
echo $page_title;
Elle n'est pas passée en get ou en post, elle est simplement déclarée "plus haut" dans le script global qui est exécuté par php :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 73 Messages

11 juil. 2011, 10:50

exactement.

seulement.. ça ne fonctionne pas !

ps : j'ai trouvé mon soucis, en fait dans le header, je n'ai pas besoin de récupérer la variable dans un $_GET, je peux directement faire un echo c'est vrai, merci bcp !