Sortir une variable dune fonction

Eléphanteau du PHP | 21 Messages

19 août 2005, 00:18

Rebonjour :)
Tout a l'heure un de mes problemes a été résolu. Pratiquement, je ne veux pas dire que c'etait pas bien, mais c'est que comme c'etait pratiquement deux sujets differents je dois faire un nouveau post ;)
Je vais montrer les codes, pourque vous puissiez bien voir mon probleme
Premiere page config.php (pas entiere, seulement la ligne ou jai le probleme)
$hote = "localhost";
$pseudo = "root";
$pass = "";
$bdd = "sayman";
$pref = "sm_";
C le prefix que jai mis pour mettre devant chaque table de ma basse
Page fonctions.php :
<?php
function lirevaleuroption($option)
{
	$sql = "SELECT `valeur` FROM `' . $pref . 'config` WHERE `option` = '". $option ."'";
	$var1 = mysql_query($sql);
	$valeur = mysql_result($var1, 0);
}
?>
Et donc ma page index.php :
include('config.php');
mysql_connect($hote,$pseudo,$pass);
mysql_select_db($bdd);
include('fonctions.php'); //Toutes les fonctions
lirevaleuroption('lang');
echo $valeur;
Voila valeur ne s'affiche pas :
Undefined variable
Par contre si le echo $valeur; je le mets dans la page de la fonction, la il safiche, mais c'est con par ce que je l'ait besoin dans ma page index.php

Voila en esperant que vous pourez me reaider :o

Mammouth du PHP | 19672 Messages

19 août 2005, 00:24

Normal, tu as oublié deux choses : dans la fonction, tu ne retournes rien : modification:
<?php
function lirevaleuroption($option)
{
    $sql = "SELECT `valeur` FROM `sm_config` WHERE `option` = '". $option ."'";
    $var1 = mysql_query($sql);
    $valeur = mysql_result($var1, 0);
    return $valeur;
}
?>
Ensuite, il faut initialiser la variable :
include('config.php');
mysql_connect($hote,$pseudo,$pass);
mysql_select_db($bdd);
include('fonctions.php'); //Toutes les fonctions
$valeur = lirevaleuroption('lang');
echo $valeur;
Explication : tu as fait erreur sur la portée des variables: $Valeur dans la fonction lirevaleuroption() n'a de portée qu'à l'intérieur de la fonction et on ne peut pas y accéder depuis l'extérieur de la fonction.

Tu as donné le même nom de variable dans le bout de code suivant : c'est une autre variable qui n'a rien à voir techniquement avec celle de la fonction et tu l'aurais nommée autrement, ça aurait aussi bien ( ou aussi mal) fonctionné.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 21 Messages

19 août 2005, 00:32

Ah merci et il aut aussi faire une chose comme ca pour mettre une variable de dehors dans la fonction?
Excusez moi, je ne l'avais pas précisé, php indique que la variable $pref n'existe pas dans la page fonction.php
Undefined variable: pref in c:\program files\easyphp1-8\www\sayman\fonctions.php on line 4
alors le sm_ n'est pas rajouté.
Mais j'ai éssayé sans mettre la variable, donc moi meme ecrit sm_ t le return march ! merci, je ne connaisez pas trop les fonctions enfaite :shock:
Mais pour le $pref je comprends pas pourquoi on me sort cette erreur :s
Merci ,

Mammouth du PHP | 19672 Messages

19 août 2005, 00:35

Il faut que l'include de ton fichier de configuration soit placé avant la fonction, sinon, tu fais un include du fichier dans la fonction elle même.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 21 Messages

19 août 2005, 00:37

Ben c'est le cas ==>
include('config.php');
mysql_connect($hote,$pseudo,$pass);
mysql_select_db($bdd);
include('fonctions.php'); //Toutes les fonctions
$valeur = lirevaleuroption('lang');
echo $valeur;

Mammouth du PHP | 19672 Messages

19 août 2005, 00:50

Alors rajoute dans la fonction en début :
include_once("config.php");
Avec include_once(), tu ne risques rien, si le fichier est déjà là, il ne sera pas inclus à nouveau, sinon, il sera récupéré.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 21 Messages

19 août 2005, 00:53

Oui, meme en faisant ca ca decone :?
Je veu dire le meme message derreur, merci pour ce code que je connaisais pas.

J'edit :
Je viens de mettre simplement include('config.php'); a la place de config_once dans la fonction.
Et comme ca ca marche, Mais bon alors ya deux fois include, moi tant que ca ne fait pas de probleme au reste jsuis content, je vois que ca marche :)
Je tiens a te remercier Cyrano
Tu ma beaucoup aidé ce soir !
++

Eléphanteau du PHP | 13 Messages

19 août 2005, 20:38

include pour un fichier de config ? oO
C'est suicidaire quand même.
Généralement pour des fichiers essenciels au fonctionnement, on utilises require() pour faire un die à la rencontre d'une erreur de path.

Tiens un bon article : http://www.expreg.com/rex_article.php?a ... e_include2
Image