8710 sujets

Développement web côté serveur, CMS

Bonjour,

Merci de bien pouvoir m'aider pour résoudre le problème suivant :

Dans mon application e-commerce, j'ai une fonction ajout_panier, qui ne se contente pas d'enregistrer une ligne dans la table des paniers. Mais elle crée aussi un identifiant unique pour le client, une fois que ce dernier ait activer le lien "ajouter au panier".

L'identifiant est stocké dans un cookie.
script : setcookie('bt_sid', $bt_sid, time() + 86400, '/').

En local, tout marche très bien pour effectuer les achats.
Cependant, sur mon serveur, après avoir activer le lien "ajouter au panier", j'ai bien le message java script "l'article a été ajouté au panier", mais je ne peux plus continuer les achats.

Comment faire, pour récupérer le contenu du panier une fois le client est identifié ?

EXTRAIT DU CODE "classe_boutique.php".

// --- ajout d'un produit dans le panier
function ajout_panier($produit_infos, $quantite=1) {
// --- on positionne un cookie pour identifier le client
//---Si ce n'est pas déjà fait
$bt_sid = $this->auto_variable('bt_sid', 'c');
if (!$bt_sid) {
// --- calcul d'un identifiant unique
$bt_sid = date("U") . getMyPid();
//--insertion du cookie
setcookie('bt_sid',$bt_sid, time()+86400, '/');
}
$tbinfos = array();
$tbinfos['sid'] = $bt_sid;
$tbinfos['prd_id'] = $produit_infos['prd_id'];
$tbinfos['libel'] = $produit_infos['libel'];
$tbinfos['prix_ht'] = $produit_infos['prix_ht'];
$tbinfos['prix_ttc'] = $produit_infos['prix_ttc'];
$tbinfos['quantite'] = intval($quantite);
$tbinfos['poids'] = $produit_infos['poids'];
// --- enregistrement des informations
$tbl = $this->nom_table('panier');
$cde = $this->creation_requete_insertion($tbl, $tbinfos);
$ok = $this->requete_sql($this->db, $cde);
if ($this->debug_mode && !$ok) {
echo "<b>ajout_panier</b> $cde (erreur:";
echo mysql_error() . ")<br>";
}
return($ok);
}

// --- recuperation des infos du panier
function contenu_panier() {
$tb = array();
// --- valeur de l'identifiant récuperé dans le cookie
$bt_sid = $this->auto_variable('bt_sid', 'c');
if (!$bt_sid) return($tb);
// --- table
$tbl = $this->nom_table('panier');
$cde = "select * from $tbl where sid='$bt_sid'";
$result = $this->requete_sql($this->db, $cde);
if ($this->debug_mode && !$result) {
echo "<b>contenu_panier</b> $cde (erreur:";
echo mysql_error() . ")<br>";
}
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$key = $row['id'];
$tb["$key"] = $row;
}
return($tb);
}

// --- comptage des articles dans le panier
function panier_comptage() {
$nb_articles = 0;
$tb = $this->contenu_panier();
reset($tb);
while (list($cle, $panier_infos) = each($tb)){
$nb_articles += $panier_infos['quantite'];
}
return($nb_articles);
}
Merci.