pb de variable qui ne passe pas

Répondre
aguiv
le 17/03/2005 à 18:04
aguiv
Bonjour à tous,

j'ai le pb suivant : dans un caddie virtuel (page panier) j'ai une $total qui correspond à la somme des articles commandés. Le caddie fonctionne, qd on clique sur commander on est dirigé sur la page commande qui redirige sur une page login (qui marche). Qd on s'est logué on a accès à la page commande dans laquelle je récupère les articles mis dans le panier et la somme des articles ($total) mais la $total que je récupère dans une table de la base est toujours égal à 0.

extrait du code de la page panier :
<?php
session_start();
//init des variables
if(!isset($HTTP_GET_VARS['ajoutPanier'])) $ajoutPanier="";//init de nb si non déclaré
else $ajoutPanier=$HTTP_GET_VARS['ajoutPanier'];
if(!isset($HTTP_GET_VARS['modifPanier'])) $modifPanier="";//init de modifPanier si non déclaré
else $modifPanier=$HTTP_GET_VARS['modifPanier'];
if(!isset($HTTP_GET_VARS['suppPanier'])) $suppPanier="";//init de suppPanier si non déclaré
else $suppPanier=$HTTP_GET_VARS['suppPanier'];
if(!isset($HTTP_GET_VARS['enregistreCommande'])) $enregistreCommande="";//init de enregistreCommande si non déclaré
else $enregistreCommande=$HTTP_GET_VARS['enregistreCommande'];
if ((!isset($HTTP_SESSION_VARS['liste']))&&($ajoutPanier=="")) $liste[]=array("VIDE",1,0,0);//init de liste si VIDE
if (isset($HTTP_SESSION_VARS['liste'])) $liste=$HTTP_SESSION_VARS['liste'];//recup de la liste de la session
if (!isset($_SESSION['total']))$total=0;
else $total=$_SESSION['total'];
?>
...
<?php
$total=0.00; // initialisation du total de la commande à 0
for ($i=0;$i<count($liste);$i++)
{//début du bloc for
$query_rsPanier="select * from articles_rdt where reference ='".$liste[$i][1]."'";
$rsPanier=mysql_query($query_rsPanier, $ConnectionSiteRDT) or die(mysql_error());
$row_rsPanier=mysql_fetch_assoc($rsPanier);
/*définition et exécution de la requête SQL afin de récupérer les informations de l'article stocké dans la base(référence...)*/
?>
<tr bgcolor="#FFFF99">
<td width="99" height="20" bgcolor="#FFFF99" class="style17"><div align="left"><?php echo $row_rsPanier['code_rdt']; ?> </div></td>
<td width="204" height="20" bgcolor="#FFFF99" class="style17"><?php echo $row_rsPanier['reference'] ?></td>
<td width="96" height="20" bgcolor="#FFFF99" class="style11"><select name="nb<?php echo $i ?>" class="
liste[$i][2]==1) echo "SELECTED"; ?>>1</option></select>
<?php $total+=$row_rsPanier['PrixVenteTTC'] * $liste[$i][2];
}// fin du bloc for
?>
<strong>Total de votre commande <?php echo $total ?> &euro; TTC </strong></span></td>

Page commande :
<?php
session_start();
//test si client déjà identifié
if (!isset($HTTP_SESSION_VARS['statut'])||($HTTP_SESSION_VARS['statut'] != "client"))
{ header("Location:login.php"); }
?>
<?php
//init des variables
if (!isset($_SESSION['total'])) $total=0;
else $total=$_SESSION['total'];
if (!isset($HTTP_GET_VARS['commandeID'])) $HTTP_GET_VARS['commandeID']=0;
if (!isset($HTTP_SESSION_VARS['statut'])) $statut="NON IDENTIFIE";
else $statut=$HTTP_SESSION_VARS['statut'];
if (!isset($HTTP_SESSION_VARS['action'])) $action="";
else $action=$HTTP_SESSION_VARS['action'];
if (!isset($HTTP_SESSION_VARS['liste'])) $liste[]=array("VIDE",1,0,0);//init de liste si VIDE
else $liste=$HTTP_SESSION_VARS['liste'];//recup de la liste de la session
if (!isset($HTTP_SESSION_VARS['clientID'])) $clientID=0;
else $clientID=$HTTP_SESSION_VARS['clientID'];
?>
<?php require_once('../Connections/ConnectionSiteRDT.php'); ?>
<?php
//enregistrement d'une nouvelle commande dans la table commandes
if (($action=="enregistre")&&($statut== "client"))
{
mysql_select_db($database_ConnectionSiteRDT, $ConnectionSiteRDT);
$insertCommande = "INSERT INTO commandes_rdt (date, clientID, total) VALUES (NOW(),'$clientID', '$total')";
$Result1 = mysql_query($insertCommande, $ConnectionSiteRDT) or die(mysql_error());
$commandeID=mysql_insert_id();//récupère l'identifiant client attibué ...
?>

En fait dans la page commande si je change : if (!isset($_SESSION['total'])) $total=0;
else $total=$_SESSION['total'];
par
if (!isset($_SESSION['total'])) $total=1;
else $total=$_SESSION['total'];
alors $total envoyé dans la base =1. Apparemment la $total n'est pas reconnu dans la page commande.

Si qq peut m'aider à résoudre le pb, grand merci, je sèche dessus depuis qq jours.
aguiv
le 18/03/2005 à 13:05
aguiv
Euh en fait pour moi oui, puisque dans la page panier il y a :
if (!isset($_SESSION['total']))$total=0;
else $total=$_SESSION['total'];

Je ne suis pas spuer doué, ca ne suffit pas pour l'enregistrer dans un variable de session ?
En tout cas merci de t'intéresser à mon big pb.
LA GLOBULE
le 18/03/2005 à 13:21
LA GLOBULE
Heu non, ca, ca n'enregistre rien en session.

Pour enregistrer en session, il faut mettre une ligne de ce genre quelque part :
$_SESSION ['total'] = ... ;
aguiv
le 18/03/2005 à 13:39
aguiv
j'ai mis $_SESSION ['total'] = $total ;
à cet endroit du code :
<?php
$_SESSION ['total'] = $total ;
$total=0.00; // initialisation du total de la commande à 0
for ($i=0;$i<count($liste);$i++)
{//début du bloc for
[\code]
mais ce ne change rien.
Qu'est-ce que je fais de mal ?
LA GLOBULE
le 18/03/2005 à 14:07
LA GLOBULE
Sur ce que tu nous as montré du script, a aucun endroit, tu fais un :
$_SESSION['total'] = quelque chose;

Ensuite, dans ta boucle, quand tu comptes le prix total :
$total+=$row_rsPanier['PrixVenteTTC'] * $liste[$i][2];

Pourquoi n'utilises pas tu directement $_SESSION['total'] ?
aguiv
le 18/03/2005 à 17:06
aguiv
oui !!! tu avais raison, maintenant ca marche. Gd merci !!
Rex
le 18/03/2005 à 23:38
Rex
heu ...

<?php
$b = 1;
$a = $b;
$b = 5;
?>


Que vaut $a, "1" ou "5" ?

remplaces $a par $_SESSION['total'] et $b par $total et tu comprendras l'énormité de ce que tu as écrit ...
Un hamster dit : J'ai dressé le scientifique, quand j'appuie sur le bouton, il me donne des graines
aguiv
le 19/03/2005 à 16:47
aguiv
oui, d'accord c'était une énorme bêtise, mais c'est comme ca qu'on apprend quand on est débutant.
Merci à tous pour vos conseils.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours