Page 1 sur 1

Sortir une variable dune fonction

Posté : 19 août 2005, 00:18
par AngEl.es
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

Posté : 19 août 2005, 00:24
par Cyrano
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é.

Posté : 19 août 2005, 00:32
par AngEl.es
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 ,

Posté : 19 août 2005, 00:35
par Cyrano
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.

Posté : 19 août 2005, 00:37
par AngEl.es
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;

Posté : 19 août 2005, 00:50
par Cyrano
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é.

Posté : 19 août 2005, 00:53
par AngEl.es
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 !
++

Posté : 19 août 2005, 20:38
par graal
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