Prob de panier ça rend dingue

Eléphant du PHP | 294 Messages

08 nov. 2005, 21:17

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");
}
?>

Mammouth du PHP | 19672 Messages

08 nov. 2005, 22:19

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 294 Messages

08 nov. 2005, 22:37

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.

Mammouth du PHP | 19672 Messages

08 nov. 2005, 22:49

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 ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 294 Messages

08 nov. 2005, 23:01

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 !

Eléphant du PHP | 294 Messages

09 nov. 2005, 00:21

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;
}

Eléphant du PHP | 294 Messages

09 nov. 2005, 00:33

trouvé,
c'est cette ligne qui "ecrasait le tableau"
$_SESSION['liste'] =array();

merci