Pb avec une variable de session

cs_attentio Messages postés 167 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 24 mai 2010 - 5 oct. 2004 à 16:10
cs_attentio Messages postés 167 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 24 mai 2010 - 5 oct. 2004 à 23:59
bonjour !
voila j'ai de grosses difficultés avec une variable de session
$_SESSION['prix_general'];
elle permet d'additionner le somme d'un caddie avec les frais de livraison.
mais voila a l'affichage tout ce passe bien grace a la fonction affiche_somme_total dans laquelle il n'y a qu'un echo $_SESSION['prix_general'];
et dans le print_r($_SESSION); de la page recap.php il recuperere bien 'prix_general'
ex :
Array ( [caddy] => Array ( [1] => 1 ) [produits] => 1 [prix_total] => 200000000 [prix_general] => 200000119 )
//recap.php
<?php
  session_start();
  $nom = $_POST['nom'];
  $prenom = $_POST['prenom'];
  $test = $_SESSION['prix_general'];

  // si le formulaire est rempli
  if($_SESSION['caddy']&&$nom&&$prenom&&$test)
  {
    // on peut inserer les données dans la base de donnée
    if( inserer_commande($_POST)!=false )
    {
$livraison = calculer_livraison($_SESSION['caddy'], $id_pays ); 
afficher_livraison($livraison); 
$_SESSION['prix_general']=$livraison+$_SESSION['prix_total'];
affiche_somme_total();
//echo print_r($_SESSION);
}}
?>

mais si je veux inserer inserer la commande dans ma base de donnée, tout fonctionne sauf pour $test qui est egal a $_SESSION['prix_general'];, il iinsere comme valeur 0.00
<?php

function inserer_commande($commande_details)
{
  extract($commande_details);

  $query = "insert into commandes values
            ('', $client_id, ".$_SESSION['prix_general'].", '$test', '$nom', '$prenom')";
  $result = mysql_query($query);
  if (!$result)
    return false;

  $query = "select commande_id from commandes where 
               client_id = $client_id and 
               calcul > ".$_SESSION['prix_general']."-.001 and calcul < ".$_SESSION['prix_general']."+.001 and
               calcul_livraison = '$test' and               nom '$nom' and prenom '$prenom' ";
 
  $result = mysql_query($query);
  if(mysql_numrows($result)>0)
    $commande_id = mysql_result($result, 0, 'commande_id');
  else
    return false; 
?>

0.00 qu'on retrouve dans le caddie parce que si je ne declare pas $_SESSION['prix_general'] ='0.00'; alors ma fonction affiche_somme_total ne marche pas
j'ai un Undefined index: prix_general a la ligne $test = $_SESSION['prix_general']; de la page recap.php
et ne peut donc pas le recuperer exemple :
Array ( [caddy] => Array ( [1] => 1 ) [produits] => 1 [prix_total] => 200000000 )

//caddie.php
<?php
  session_start();
  @ $new = $_GET['new'];
 if($new)
  {
    if(!isset($_SESSION['caddy']))
    {
      $_SESSION['caddy'] = array();
      $_SESSION['produits'] = 0;
      $_SESSION['prix_total'] ='0.00';
      $_SESSION['prix_general'] ='0.00';
    }
    if(isset($_SESSION['caddy'][$new]))
      $_SESSION['caddy'][$new]++;
    else 
    $_SESSION['caddy'][$new] = 1;)
    $_SESSION['prix_total'] = calculer_prix($_SESSION['caddy']);
    $_SESSION['produits'] = calculer_produits($_SESSION['caddy']);
  }
  if(isset($_POST['save']))
  {   
    foreach ($_SESSION['caddy'] as $ref => $quantite)
    {
      if($_POST['referenceno'.$ref]=='0')
        unset($_SESSION['caddy'][$ref]);
      else 
        $_SESSION['caddy'][$ref] = $_POST['referenceno'.$ref];
    }
    $_SESSION['prix_total'] = calculer_prix($_SESSION['caddy']);
    $_SESSION['produits'] = calculer_produits($_SESSION['caddy']);
  }
  if($_SESSION['caddy']&&array_count_values($_SESSION['caddy']))
    afficher_caddy($_SESSION['caddy']);
?>


voila j'espere avoir ete clair, je n'arrive pas du tout a trouver mon erreur ... merci de votre aide

ps : si vous avez besoin d'infos complementaires n'hesitez pas !

merci

2 réponses

toniog1 Messages postés 11 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 13 décembre 2004
5 oct. 2004 à 23:38
SI je comprends bien dans ton deuxieme code tu dis que la variable $test a pour valeur la variable $_SESSION['prix_general']

or dans ton code :

$query = "insert into commandes values
('', $client_id, ".$_SESSION['prix_general'].", '$test', '$nom', '$prenom')";

tu dis que "tout fonctionne sauf pour $test " donc pourquoi tu ne remplace pas le code d'haut dessus par :

$query = "insert into commandes values
('', $client_id, ".$_SESSION['prix_general'].", ".$_SESSION['prix_general'].", '$nom', '$prenom')";

au lieu d'utiliser la variable $test tu réutilise la variable $_SESSION['prix_general']
0
cs_attentio Messages postés 167 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 24 mai 2010
5 oct. 2004 à 23:59
oui C vrai que $test ne sert pas a grand chose, mais meme si je fais comme tu dis ca ne marche pas non plus
0
Rejoignez-nous