Page 1 sur 1

Prob de panier ça rend dingue

Posté : 08 nov. 2005, 21:17
par Gico
Bonjour
je réitère ma demande d'aide, pour ce script de panier qui fonctionne en local et plus en ligne. J'ai tout tester les variable de sessions sont bien gerées par l'hebergeur...
En local tout ce passe normalement, lorque j'ajoute un article et que j'arrive a ce script,l'article est ajouté au tableau "liste". En ligne le tableau liste prend le premier article et se vide au second
Si quelqun pouvais m'expliquer ce qui se passe...merci d'avance


<?php
session_start(); 
require_once('../Connections/connexioncentrale_db.php'); 
if (!isset($_SESSION['total'])) $_SESSION['total']=0;
if(!isset($_GET['ajoutPanier'])) $ajoutPanier="";//init de ajoutPanier si non déclaré
else  $ajoutPanier=$_GET['ajoutPanier']; 
if(!isset($_GET['modifPanier'])) $modifPanier="";//init de modifPanier si non déclaré
else $modifPanier=$_GET['modifPanier'];
if(!isset($_GET['suppPanier'])) $suppPanier="";//init de suppPanier si non déclaré
else $suppPanier=$_GET['suppPanier'];
if(!isset($_GET['enregistreCommande'])) $enregistreCommande="";//init de enregistreCommande si non déclaré
else $enregistreCommande=$_GET['enregistreCommande'];
if ((!isset($_SESSION['liste']))&&($ajoutPanier=="")) $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
mysql_select_db($database_connexioncentrale_db, $connexioncentrale_db);
$query_rsMarque = "SELECT id, marque FROM marque ORDER BY marque ASC";
$rsMarque = mysql_query($query_rsMarque, $connexioncentrale_db) or die(mysql_error());
$row_rsMarque = mysql_fetch_assoc($rsMarque);
$totalRows_rsMarque = mysql_num_rows($rsMarque);
/**
* Vérifie la présence d'un article dans le panier
*/
$reference=$_GET['VARarticles'];
function verif_panier($ref_article)
{
    $present = false;
    if(is_array($_SESSION['liste'][0]))
    {
        if(array_search($ref_article,$_SESSION['liste'][0]) != false)
        {
            $present = true;
        }
    }
    return $present;
}
//----------------------------------------------------AJOUT PANIER cree liste
if ($ajoutPanier=="AJOUTER" && $present == false)
{ 
$reference=$_GET['VARarticles'];
$nb=1; //par défaut la quantité est = 1
$prixUnit=$_GET['prixUnit'];
$totalarticle=$nb*$prixUnit;
$liste[]=array($reference,$nb,$prixUnit,$totalarticle);
$_SESSION['liste'] = array();
$_SESSION['liste']=$liste;
}
//----------------------------------------------------MODIF PANIER
if ($modifPanier=="OK")
{
	 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 ($suppPanier=="SUPPRIMER")
{
	$article=$_GET['articles'];
	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 ($enregistreCommande=="COMMANDER")
{
	if(!isset($_GET['action'])) 
	$_SESSION['action']="ENREGISTRER";//mémorise l'action necessaire pour la page commande.
	header("Location: login.php");
}
?>

Posté : 08 nov. 2005, 22:19
par Cyrano
Ton code est tout compacté et un peu ilisible: aère donc, même pour toi. Je voudrais pas être à ta place dans six mois quand tu auras besoin d'y faire une modification pour ajouter un détail.

Pour vérifier ton système, ajoute donc un var_dump($_SESSION) au début du code histoire de voir ce que tu as au juste de stocké comme informations.

Posté : 08 nov. 2005, 22:37
par Gico
Les informations stockées sont bonnes jusqu'au second ajout d'un article, la le tableau se vide alors. En local, pas de probleme, le tableau se met a jour avec chaque article ajouté...
Désolé pour le formatage du code, je vais y travailler.

Posté : 08 nov. 2005, 22:49
par Cyrano
Pour le formatage, c'est aussi vrai pour tes lecteurs que pour toi même note bien.

As-tu regardé mon tuto sur les paniers ?

Posté : 08 nov. 2005, 23:01
par Gico
oui, vaguement, parce que j'avais déja commencé le miens sur un autre modèle, je me l'étais mis en signet pour étudié ça a un moment...peut etre que je devrais m'y mettre maintenant. C'est quand même prise de tête ces script qui fonctionnent nickel en local et a l'opposé en ligne !

Posté : 09 nov. 2005, 00:21
par Gico
il me semble que c'est ici que ça ce passe, plus particulièrement dans les deux dernières lignes, y a t'il une erreur ?

if ($ajoutPanier=="AJOUTER" && $present == false)
{ 
$nb=1; //par défaut la quantité est = 1
$prixUnit=$_GET['prixUnit'];
$totalarticle=$nb*$prixUnit;
$liste[]=array($reference,$nb,$prixUnit,$totalarticle);
$_SESSION['liste'] =array();
$_SESSION['liste']=$liste;
}

Posté : 09 nov. 2005, 00:33
par Gico
trouvé,
c'est cette ligne qui "ecrasait le tableau"
$_SESSION['liste'] =array();

merci