[PHP] pb de variable dans une fonction

pb de variable dans une fonction [PHP] - PHP - Programmation

Marsh Posté le 01-10-2004 à 22:31:52    

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

Code :
  1. //page prinipal.php
  2. afficher_livraison($livraison);


 

Code :
  1. //fonctions.php
  2. function afficher_livraison($livraison)
  3. {
  4. $_SESSION['prix_general']=$livraison+$_SESSION['prix_total'];
  5. echo $livraison ;
  6. echo $_SESSION['prix_total'];
  7. echo $_SESSION['prix_general'];
  8. }


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 :

Code :
  1. //page prinipal.php
  2. $_SESSION['prix_general']=$livraison+$_SESSION['prix_total'];
  3. afficher_livraison($livraison);


 

Code :
  1. //fonctions.php
  2. function afficher_livraison($livraison)
  3. {
  4. echo $livraison ;
  5. echo $_SESSION['prix_total'];
  6. echo $_SESSION['prix_general'];
  7. }


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


Message édité par attentio le 24-03-2005 à 21:10:56

---------------
L'ordinateur a de la mémoire mais aucun souvenir ...
Reply

Marsh Posté le 01-10-2004 à 22:31:52   

Reply

Marsh Posté le 01-10-2004 à 22:56:59    

un "return $livraison" :)

Reply

Marsh Posté le 01-10-2004 à 23:26:18    

et je le place ou et comment le return

Reply

Marsh Posté le 01-10-2004 à 23:30:42    

ben à la fin

Code :
  1. function blabla(){
  2. blabla
  3. return $livraison;
  4. }
  5. echo blabla();

Reply

Marsh Posté le 01-10-2004 à 23:39:49    

j'ait ça mais ça marche pas

Code :
  1. function afficher_livraison($livraison)
  2. {
  3. return $livraison;
  4. echo $livraison ;
  5. echo $_SESSION['prix_total'];
  6. echo $_SESSION['prix_general'];
  7. }

Reply

Marsh Posté le 01-10-2004 à 23:47:11    

elle sert a rien ta fonction la :/
 
en gros tu fait une fonction qui se base sur livraison et ensuite tu le reaffiche

Reply

Marsh Posté le 01-10-2004 à 23:47:44    

C'est pas vraiment ce qu'il t'a dit non plus tu sais :D
 
Le return est à la FIN de la fonction (même si je vois pas le rapport entre la question et la réponse :D)

Reply

Marsh Posté le 01-10-2004 à 23:51:51    

naceroth a écrit :

C'est pas vraiment ce qu'il t'a dit non plus tu sais :D
 
Le return est à la FIN de la fonction (même si je vois pas le rapport entre la question et la réponse :D)

chui claqué je comprend pas ce qu'il veut faire :D

Reply

Marsh Posté le 01-10-2004 à 23:59:40    

Il veut afficher des infos avec une fonction, mais sortir le calcul de la dites fonction :)
 
Sinon attentio, question idiote, t'as affecté une valeur à ta variable $livraison ? ou bien tu confonds le paramètre (de la fonction) et une variable du script principal qui porte pas le même nom ?

Reply

Marsh Posté le 02-10-2004 à 00:03:48    

revoila l'abruti de service, si moi bien comprendre toi moi devoir faire ca ... nan??

Code :
  1. //page prinipal.php  
  2. $_SESSION['prix_general']=$livraison+$_SESSION['prix_total'];
  3. afficher_livraison($livraison);


 

Code :
  1. //fonctions.php
  2. function afficher_livraison($livraison) 
  3. echo $livraison ; 
  4. echo $_SESSION['prix_total']; 
  5. echo $_SESSION['prix_general']; 
  6. }
  7. return $livraison;


 
merci de votre patience

Reply

Marsh Posté le 02-10-2004 à 00:03:48   

Reply

Marsh Posté le 02-10-2004 à 00:06:12    

... en tout ca si je fais un echo $livraison il m'affiche bien ma valeur

Reply

Marsh Posté le 02-10-2004 à 00:08:25    

Moi conseille toi voir manuel, parce que moi dire à la fin, pas après la fonction, toi avoir exemple 16-1 qui devrait aider toi :)
 
Plus sérieusement, répond aux autres questions, parce que le return a pas grand chose à voir avec ton problème :)

Reply

Marsh Posté le 02-10-2004 à 00:18:24    

ok !
la valeur de ma variable est la suivante

Code :
  1. $livraison = calculer_livraison($_SESSION['caddy'], $id_pays );

 

Reply

Marsh Posté le 02-10-2004 à 00:21:02    

... et je veux en effet simplement sortir mon calcul de ma fonction : C tout ce que je veux faire ...et que ca marche aussi !!!
 
merci

Reply

Marsh Posté le 02-10-2004 à 00:21:31    

(mouarf, j'ai rien dit pour le return :D)
 
Y a un return à ta fonction calculer_livraison ?

Reply

Marsh Posté le 02-10-2004 à 00:25:23    

nan yan na jamais eu !!! c'est chacal_one333 qui m'a dit d'en mettre un

Reply

Marsh Posté le 02-10-2004 à 00:29:51    

Ben pour le coup, fallait l'écouter (à la fonction calculer_livraison hein), tu mets un return $lavariablequicalculelerésultat juste avant le } qui ferme la fonction :)

Reply

Marsh Posté le 02-10-2004 à 00:34:31    

si C celle la dont tu parle

Code :
  1. $_SESSION['prix_general']=$livraison+$_SESSION['prix_total'];


C celle que je veux justement sortir de la fonction et mettre sur la page principale qui appelle la fonction.
 
desolé, ... je ne dois pas etre tres clair
 
merci

Reply

Marsh Posté le 02-10-2004 à 00:38:47    

Bon, on va faire rapide, tapes nous la fonction calculer_livraison().
 
(je lui parle de calculer_livraison, il me sort un calcul venant d'afficher_livraison, et pourtant, c'est pas faute d'avoir mis le nom de la fonction en gras :sarcastic: )

Reply

Marsh Posté le 02-10-2004 à 00:43:28    

houps desolé ...

Code :
  1. <?
  2. function calculer_livraison($caddy,$id_pays)
  3. {
  4.   //  
  5.   $prix = 0.0;
  6.   if(is_array($caddy))
  7.   {
  8.     $conn = db_connect();
  9.     foreach($caddy as $ref => $quantite)
  10.     { 
  11. //recherche de l'identifiant du pays
  12. $req_pays="select zone from pays where pays_id='$id_pays'";
  13. $resultat_pays = mysql_query($req_pays) or die('Erreur SQL : '.mysql_error());
  14. $row = mysql_fetch_row($resultat_pays);
  15. //print_r($row);  
  16. $selection_pays = $row[0];
  17. //  livraison au prix normal
  18. if((isset($_POST['choix'])) and ($_POST['choix']=='prix_normal'))
  19.  {
  20. $req_liv_norm="select normal from livraison where livraison_id='$selection_pays'";
  21. $resultat_liv_norm = mysql_query($req_liv_norm) or die('Erreur SQL : '.mysql_error());
  22. $row_normal = mysql_fetch_row($resultat_liv_norm); 
  23. $coef_normal = $row_normal[0];
  24.  }
  25. //  livraison au prix express
  26. if((isset($_POST['choix'])) and ($_POST['choix']=='prix_express'))
  27.  {
  28. $req_liv_exp="select express from livraison where livraison_id='$selection_pays'";
  29. $resultat_liv_exp = mysql_query($req_liv_exp) or die('Erreur SQL : '.mysql_error());
  30. $row_express = mysql_fetch_row($resultat_liv_exp); 
  31. $coef_express = $row_express[0];
  32.  }
  33. $query = "select prix_livraison from articles where ref='$ref'";
  34.    
  35.       $result = mysql_query($query);
  36.       if ($result)
  37.       {
  38.         $prix_livraison = mysql_result($result, 0, 'prix_livraison');
  39.  if((isset($_POST['choix'])) and ($_POST['choix']=='prix_normal'))
  40.    {
  41.  $prix_pays =$prix_livraison*$coef_normal;
  42.    }
  43.   if((isset($_POST['choix'])) and ($_POST['choix']=='prix_express'))
  44.       {
  45.  $prix_pays =$prix_livraison*$coef_express;
  46.    }
  47.         $prix +=$prix_pays*$quantite;
  48.       }
  49.     }
  50.   }
  51.   return $prix;
  52. }
  53. ?>

Reply

Marsh Posté le 02-10-2004 à 00:52:04    

Dit, la ligne 55 c'est quoi ? Oh, un return \o/ 20 minutes de perdues :D
 
Mais du coup, je vois plus où se situe ton problème...Tu définis bien $livraison avant de l'utiliser ? (ou en français tu as bien qqch du style :

Code :
  1. $livraison = ...;
  2. ...
  3. $_SESSION['prix_general']=$livraison+$_SESSION['prix_total'];


Reply

Marsh Posté le 02-10-2004 à 01:14:38    

bon ... je reprends tout depuis le debut ... je vais faire comme chez le psy ...
j'ai  

Code :
  1. $_SESSION['prix_general']=$livraison+$_SESSION['prix_total'];


qui me permet d'additionner  $livraison (frais de livraison selon la zone de livraison) avec prix_total (le prix total du panier-> C un site de E commerce )
jusque la pas de probleme, j'ai placé ca dans ma fonction afficher_livraison ... ca roule.
MAIS le gros soucis C (je ne sais pas pourquoi)lorsque je fais page precedante dans mon navigateur et que je reviens sur cette meme page ... ca marche plus !!!! . Du coup, je me suis aperçu que ca venait de cette addition . c'est voila le pourquoi du comment que maintenant, je veux me debarrasser de cette declaration de variable de session de la fonction et la placer sur ma page principale qui appelle celle ci .
 
voilou mes soucis ... si ca peut aider (surtout moi)

Reply

Marsh Posté le 02-10-2004 à 02:16:05    

naceroth a écrit :

Ben pour le coup, fallait l'écouter  

ouha l'ot eh? [:antp:9]

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed