Problème avec un panier virtuel
Posté : 21 nov. 2005, 19:04
Bonjour tout le monde !
je reviens avec mes questions...
Alors voilà, j'avance dans la conception de la boutique, et j'en suis au panier.
J'ai consulté la recherche et j'ai vu que beaucoup de gens s'étaient inspirés du même livre que moi pour le panier. J'ai aussi consulté le tuto très complet de Cyrano (merci pour ton boulot) , d'ailleurs tellement complet que je n'ai pas tout compris.
Bref, venons en au fait :
Voici donc mon code: panier.php
lorsque je clique sur le bouton "Actualiser", "j'obitens le message, votre panier est vide"... après recherche, j'ai l'impression que l'id de session change à ce moment : une idée, des critiques ?
merci d'avance pour votre aide
je reviens avec mes questions...
Alors voilà, j'avance dans la conception de la boutique, et j'en suis au panier.
J'ai consulté la recherche et j'ai vu que beaucoup de gens s'étaient inspirés du même livre que moi pour le panier. J'ai aussi consulté le tuto très complet de Cyrano (merci pour ton boulot) , d'ailleurs tellement complet que je n'ai pas tout compris.
Bref, venons en au fait :
Voici donc mon code: panier.php
<?php
session_start();
//init des variables
if (!isset($_SESSION['total'])) $_SESSION['total']="";
if(!isset($_GET['ap'])) $ap="";//init de ajoutPanier(ap) si non déclaré
else $ap=$_GET['ap'];
if(!isset($_GET['mp'])) $mp="";//init de modifPanier(mp) si non déclaré
else $mp=$_GET['mp'];
if(!isset($_GET['sp'])) $sp="";//init de suppPanier(sp) si non déclaré
else $sp=$_GET['sp'];
if(!isset($_GET['ec'])) $ec="";//init de enregistrerCommande(ec) si non déclaré
else $ec=$_GET['ec'];
if ((!isset($_SESSION['liste']))&&($ap=="")) $liste[]=array("VIDE",1,0,0);//init de liste si VIDE
if (isset($_SESSION['liste'])) $liste=$_SESSION['liste'];//recup de la liste de la session
if(!isset($_GET['ref'])) $ref="";
else $ref=$_GET['ref'];
require_once('../Connections/cnn.php');
mysql_select_db($database_cnn, $cnn);
// caddy
$query_rscaddy= sprintf("SELECT * FROM articles WHERE articles.reference='%s' ORDER BY articles.libelle ASC" , $ref);
$rscaddy=mysql_query($query_rscaddy, $cnn) or die(mysql_error());
$row_rscaddy = mysql_fetch_assoc($rscaddy);
$totalRows_rscaddy = mysql_num_rows($rscaddy);
// menu gauche
$query_rsproduits = "SELECT rubriks.theme, rubriks.ID FROM rubriks ORDER BY rubriks.theme";
$rsproduits = mysql_query($query_rsproduits, $cnn) or die(mysql_error());
$row_rsproduits = mysql_fetch_assoc($rsproduits);
$totalRows_rsproduits = mysql_num_rows($rsproduits);
//----------------------------------------------------AJOUT PANIER
if ($ap=="c3126cde5eb24627ffa33cd98b0b3ad7")
{
$nb=1; //par défaut la quantité est de 1
$prix=$row_rscaddy['prix'];
$liste[]=array($ref,$nb,$prix,$prix);
$_SESSION['liste']=$liste;
//ajoute un article à la liste
}
//----------------------------------------------------MODIF PANIER
if ($mp=="ACTUALISER")
{
for ($i=0;$i<count($liste);$i++)
{
$nbi='nb'.$i;
$liste[$i][1]=$_GET["$nbi"];//recup du nbr d'article dans la liste
$liste[$i][3]=$liste[$i][1]*$liste[$i][2];//prixArticle=nbre*prixUnitaire
}
$_SESSION['liste']=$liste;//mAj de la liste
}
//----------------------------------------------------SUPP PANIER
if ($sp==1)
{
$article=$_GET['article'];
for ($i=0;$i<count($liste);$i++)
{
if($article==$i)
array_splice($liste,$i,1);
//suppression de l'article
}
$_SESSION['liste']=$liste;//mAj de la liste
}
//----------------------------------------------------COMMANDER
if ($ec=="COMMANDER")
{
if(!isset($_GET['action']))
$_SESSION['action']="ENREGISTRE";//mémorise l'action
header("Location: commande.php");
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<title>Voici le contenu de votre panier...</title>
</head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<div id="header" align="center">
</div>
<ul id="menuhaut">
<li><a href="accueil.php" accesskey="1">Retour à l'accueil</a> - </li>
<li><a href="contact.php">Contact</a> - </li>
<li><a href="acc_admin.php">Espace Admin</a></li>
</ul>
<div id="zone_g">
<br><br><br><br>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="11%"><img src="../images/Tablo/haut_gauche.gif"></td>
<td width="83%" class="bh"><strong><font color="#669999" size="2" face="Verdana, Arial, Helvetica, sans-serif">Produits</font></strong></td>
<td width="6%"><img src="../images/Tablo/haut_droit.gif"></td>
</tr>
<tr>
<td height="57" class="bg"> </td>
<td bgcolor="#FFFFFF">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><?php do { ?>
<a href="<?php echo "catalogue.php?rubrikID=".$row_rsproduits['ID']?>"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><?php echo $row_rsproduits['theme']."<br>"; ?></font></a>
<?php } while ($row_rsproduits = mysql_fetch_assoc($rsproduits)); ?>
</td>
</tr>
</table>
</td>
<td class="bd"> </td>
</tr>
<tr>
<td height="25"><img src="../images/Tablo/bas_gauche.gif"></td>
<td class="bb"> </td>
<td><img src="../images/Tablo/bas_droit.gif"></td>
</tr>
</table>
</div>
<div id="centre">
<p><font color="#330099" size="3" face="Verdana, Arial, Helvetica, sans-serif"><strong><br>
<font color="#FF9900" size="6" face="Arial, Helvetica, sans-serif">PANIER
VIRTUEL</font></strong></font></p>
<?php if($liste[0][0]!="VIDE") { ?>
<form action="panier.php" method="get" >
<table width="650" border="1" align="center" cellspacing="0" bordercolor="#000000">
<tr>
<td>
<table width="650" border="0" align="center" cellpadding="0" cellspacing="0">
<tr bgcolor="#006600">
<td width="200" height="20"><div align="center"><font color="#FFFFFF"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Titre</font></strong></font></div></td>
<td width="200"><div align="center"><font color="#FFFFFF"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Quantité</font></strong></font></div></td>
<td width="200"><div align="center"><font color="#FFFFFF"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Prix</font></strong></font></div></td>
<td width="50"><div align="center"><font color="#FFFFFF"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Supp</font></strong></font></div></td>
</tr>
<?php
$total=0.00;
for ($i=0;$i<count($liste);$i++)
{
$query_rsPanier="select * from articles where reference = '".$liste[$i][0]."'";
//echo $query_rsPanier;
$rsPanier = mysql_query($query_rsPanier, $cnn) or die(mysql_error());
$row_rsPanier = mysql_fetch_assoc($rsPanier);
?>
<tr>
<td height="37"><div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><?php echo $row_rsPanier['libelle'] ?></font></div></td>
<td><div align="center">
<select name="nb<?php echo $i ?>" id="nb">
<option value="1" <?php if($liste[$i][1]==1) echo "SELECTED"; ?>>1</option>
<option value="2" <?php if($liste[$i][1]==2) echo "SELECTED"; ?>>2</option>
<option value="3" <?php if($liste[$i][1]==3) echo "SELECTED"; ?>>3</option>
</select>
</div>
</td>
<td><div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><?php echo $row_rsPanier['prix'] ?></font></div></td>
<td><div align="center"><a href="../public/panier.php?article=<?php echo $i ?>&sp=1"><img src="../images/boutique/ico_poubelle.gif" width="32" height="32" border="0"></a></div></td>
</tr>
<?php
$total+=$row_rsPanier['prix'] * $liste[$i][1];
}
$_SESSION['total']=$total;
?>
<tr>
<td ><div align="center"></div></td>
<td ><div align="center"></div></td>
<td ><div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Total
: <?php echo $total ?> Euro</strong></font></div></td>
<td ><div align="center"></div></td>
</tr>
</table></td>
</tr>
</table>
<br>
<strong><font size="1" face="Verdana, Arial, Helvetica, sans-serif">En cliquant
sur le bouton Commander, vous signifiez avoir pris connaissance des<a href="javascript:Ouvrirpopup(cond_vente.php,a,directories=no,resizable=yes,location=no,height=290,width=515)">
<font color="#006600">Conditions de Ventes</font></a><br>
et les accepter.</font></strong><br>
<p align="center">
<input name="mp" type="submit" value="ACTUALISER">
<input name="ec" type="Submit" value="COMMANDER">
</p>
</form>
<?php } else { ?>
<p align="center"><strong><font size="4" face="Verdana, Arial, Helvetica, sans-serif">Votre panier est vide</font></strong></p>
<?php }?> </td>
</tr>
</table>
</div>
<div id="footer">
</div>
<br>
</html>
Le problème :lorsque je clique sur le bouton "Actualiser", "j'obitens le message, votre panier est vide"... après recherche, j'ai l'impression que l'id de session change à ce moment : une idée, des critiques ?
merci d'avance pour votre aide