Forum Clubic

Problème de portée de variable en PHP

Bonjour à tous
J’ai un problème concernant la portée d’une variable (qui est nulle en l’occurence) en PHP:
Je dispose d’une première page d’index (index.php), dans laquelle j’ai utilisé: require(‘fonctions.php’);

Le fichier test.php contient le code suivant:

global $m;
$m="kk";

function f(){
			global $m;
			echo $m;
}

Le problème c’est que si j’utilise la fonction f() depuis la page index.php, j’obtiens systématiquement du vide, comme quoi $m resterait nulle…
J’ai testé avec les GLOBAL, sans, et rien n’y fait… S’il vous ^plaît, aidez-moi!
Edité le 04/09/2009 à 08:37

Tu y fais appel comment dans index.php à ta page ? (file le code avant et après le require).

Tu es sûr de ne pas faire cet appel dans une fonction, etc ?

Le echo ne se fait peut être pas à la place où tu l’attends.
Si tu mets return $m à la place de echo $m, ça donne quoi ?

Merci de votre aide :slight_smile: !

Voici le contenu de mon index.php :

<?php require('fonctions.php');?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1" /> 
</head>
<body>
<?php
			f();
?>
<br></body></html>


Pareil apparemment. C’est à dire ça n’affiche pas le “kk” attendu.

Vire le global au début du fichier. Sinon, je ne vois pas perso.

Salut,

Même si le premier global est inutile ça devrait marcher… :etonne2:

Tu as tracé la variable $m pour voir comment elle évolue?
Un ptit doute : le fichier contenant la fonction f() s’appelle bien fonctions.php? (tu l’appelles test.php dans ton 1er post…)

Ca ne marche toujours pas…
Pour le fichier fonctions.php et test.php, j’ai renommé le fichier test en fonctions.php et vérifié que j’avai fait le bon appel.
La variable $m est “reconnue” tant qu’elle n’est pas utilisée dans la fonction.
Pas grave, j’utiliserai un appel en paramètre pour toutes les variables externes à la fonction… Vive le Php.
Merci tout de même pour votre aide :slight_smile:

J’ai fait le test, avec et sans le “global” dans fonctions.php (tout en haut).
Chez moi ca fonctionne :

manu@manu-desktop:/var/www/devel$ php test.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1" /> 
</head>
<body>
kk<br></body></html>

Dans fonctions.php, t’as pas oublié les balises <?php ?> ???

Je vais refaire des tests, si tu me dis que sans le global ça fonctionne chez toi,
et je vais bien vérifier les balises <?php et ?>
Merci à toi :D!

Pense aussi à faire $GLOBALS[‘m’] à la place de global $m;

Peut-être que ce que tu fais marche aussi mais j’y ai jamais touché…