Page 1 sur 1

probleme de panier

Posté : 06 nov. 2005, 13:45
par Gico
Bonjour.
J'ai développé un systeme de panier en local, tout fonctionnait. Une fois installé sur le serveur j'ai un comportement bizarre comme si les variables de sessions s'effaçaient.
Lorsque j'ajoute un produit il vient bien dans le panier, ses coordonnées sont stockées dans une variable de session "liste", qui est un tableau.
Au premier article ajouté donc, tous s'affiche correctement, si je retour a la boutique pour ajouter un second article, ou meme si je clique sur "page precedente", et que je reviens au panier, plus rien ne s'affiche. le panier est vide, Il me faut fermer le navigateur pour recuperer a nouveau un panier fonctionnel - pour 1 produit.
Pourtant en local tout baigne...comprends pas...help

<?php require_once('../Connections/connexioncentrale_db.php'); ?>
<?php
session_start();
//init des variables
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['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 ($enregistreCommande=="COMMANDER")
{
	if(!isset($_GET['action'])) 
	$_SESSION['action']="ENREGISTRER";//mémorise l'action necessaire pour la page commande.
	header("Location: login.php");
}
?>

Posté : 06 nov. 2005, 13:49
par Cyrano
Ton session_start() doit être en tout premier lieu dans le code:
<?php
session_start();
require_once('../Connections/connexioncentrale_db.php');
//init des variables 
Essaye déjà cette modification et revérifie.

Posté : 06 nov. 2005, 14:30
par Gico
merci
c'est fait hélas ça change rien

Posté : 06 nov. 2005, 19:18
par Jawad
Deux choses à vérifier chez ton hébergeur:
- si l'identifiant de session est bien passé automatiquement (affiche le résultat de session_id() sur quelques pages, normalement cela doit être le même à chaque fois). Si non, stocke-le dans un cookie pour réouvrir la session par la suite.
- s'il n'y a pas de manip particulière à faire pour utiliser les sessions (chez Free par exemple il faut créer un dossier sessions/ à la racine du compte). Mais cela est plutôt rare chez les hébergeurs payants.

Posté : 07 nov. 2005, 01:28
par Gico
Je suis chez ovh. sinon j'ai essayé le truc de l'Id session, et l'identifiant rest bien le même de page en page. Par contre j'ai essayé en ligne e t en local de suivre le tableau -"liste", qui contient les données des articles. En fait, en local , le tableau se remplis normalement, un nouvel article a chaque ajout, alors que bizarrement, en ligne, le tableau se vide a l'ajout d'un nouvel article.