Sortir une variable d'une fonction

cs_attentio Messages postés 167 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 24 mai 2010 - 2 oct. 2004 à 12:36
cs_attentio Messages postés 167 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 24 mai 2010 - 2 oct. 2004 à 16:02
bonjour a tous !

bon j'ai un ptit pb avec une variable dans une fonction . je vous explique : si elle se trouve a l'interieur de ma fonction le calcul se passe bien mais apres G plein de problemes. donc je voudrais la sortir de ma fonction mais il n'arrive pas a identifier la variable $livraison

actuellement C comme ca
//page prinipal.php 
afficher_livraison($livraison);  

.
//fonctions.php 
function afficher_livraison($livraison) 
{ 
$_SESSION['prix_general']=$livraison+$_SESSION['prix_total']; 

echo $livraison ; 
echo $_SESSION['prix_total']; 
echo $_SESSION['prix_general']; 
} 

ca marche mais bon des galeres a la suite : ... je ne sais pas pourquoi.
donc en fait je voudrais sortir la declaration $_SESSION['prix_general']
comme ceci :
//page prinipal.php 
$_SESSION['prix_general']=$livraison+$_SESSION['prix_total']; 
afficher_livraison($livraison); 
 

.
//fonctions.php 
function afficher_livraison($livraison) 
{ 
echo $livraison ; 
echo $_SESSION['prix_total']; 
echo $_SESSION['prix_general']; 
} 


mais le pb C qu'il ne reconnait pas la variable $livraison sur la page principale

merci de votre aide
ATTENTIO

8 réponses

AkeluX Messages postés 113 Date d'inscription samedi 15 mai 2004 Statut Membre Dernière intervention 9 mars 2007 2
2 oct. 2004 à 13:24
T as ptêtre oublier le session_start() ... donc prix_general n est pas correct dans la fonction ...

C juste une idée ... je sais pas si tu l as fait parce qu on a pas tout le code ...

AkeluX
0
cs_windu Messages postés 282 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 19 juillet 2006
2 oct. 2004 à 14:22
ya aussi le problème suivant (si tu travaille avec PHP4.x):
la variable $livraison dans le programme principal et celle dans la fonction afficher_livraison ne sont pas les memes!!!
En effet, tu effectue une transmission par valeur (ce qui est transmis c'est le contenu de la variable, et non la variable elle-même)
_ Il faut soit que tu utilise la transmission par référence, en mettant & devant la variable:
afficher_livraison(&$livraison);

_ soit utiliser PHP5 qui passe les variables par référence par défaut...

Que la Force soit avec toi, Jeune Padawan!!!
0
cs_attentio Messages postés 167 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 24 mai 2010
2 oct. 2004 à 14:30
OUI, ... G bien bien un session_start sur ma page principale ... mais pas dans ma foction
0
cs_attentio Messages postés 167 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 24 mai 2010
2 oct. 2004 à 14:33
...et le "&" if faut que je le mette uniquement sur ma page principal et sur sur ma fonction ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_attentio Messages postés 167 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 24 mai 2010
2 oct. 2004 à 15:08
si j'en met un sur afficher_livraison($livraison) de ma page principale j'ai une erreur :
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in pageprincipal.php
0
cs_windu Messages postés 282 Date d'inscription vendredi 16 mai 2003 Statut Membre Dernière intervention 19 juillet 2006
2 oct. 2004 à 15:16
tu dois mettre le "&" juste devant la variable dans la page principale!

L'erreur te dit que par défaut le passage est par valeur et que le fait de mettre "&" devant la variable la fera passer par référence... Le message te propose de modifier la variable 'allow_call_time_pass_reference' dans ton fichier php.ini pour que par défaut le passage se fasse par référence, car les version supérieures (PHP5.x) effectuent le passage par référence par défaut...

Que la Force soit avec toi, Jeune Padawan!!!
0
cs_attentio Messages postés 167 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 24 mai 2010
2 oct. 2004 à 15:40
ca marche pas !!!!
j'ai fait
[code]
//page prinipal.php
$_SESSION['prix_general']= &$livraison+$_SESSION['prix_total'];
afficher_livraison($livraison);

//fonctions.php
function afficher_livraison($livraison)
{
echo $livraison ;
echo $_SESSION['prix_total'];
echo $_SESSION['prix_general'];
}
[code]
et si je fais un echo print_r[$_SESSION]; il me renvoi ceci
Array ( [caddy] => Array ( [1] => 1 ) [produits] => 1 [prix_total] => 200000000 [prix_general] => ) 1

alors qu'avant (avec mon addition dans ma fonction et sans le &) il me renvoyait Array ( [caddy] => Array ( [1] => 1 ) [produits] => 1 [prix_total] => 200000000 [prix_general] => 0.00) 1

merci infiniment de ton aide
0
cs_attentio Messages postés 167 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 24 mai 2010
2 oct. 2004 à 16:02
une precision :
Array ( [caddy] => Array ( [1] => 1 ) [produits] => 1 [prix_total] => 200000000 [prix_general] => 0.00) 1
était bien affiché sur ma page

mais dans ma fonction il arrivait bien a faire le calcul
//page_principale
session_start;
echo print_r[$_SESSION];
afficher_livraison($livraison);

//fonctions.php
$_SESSION['prix_general']=$livraison+$_SESSION['prix_total'];
echo 'livraison =';
echo $livraison ; 
echo '
prix total =';
echo $_SESSION['prix_total']; 
echo '
prix general =';
echo $_SESSION['prix_general']; 


ce qui donne a l'ecran

Array ( [caddy] => Array ( [1] => 1 ) [produits] => 1 [prix_total] => 200000000 [prix_general] => 0.00) 1
livraison = 400
prix total = 200000000
prix general = 200000400

je comprends rien :sad)
0
Rejoignez-nous