Different cookies dans un meme navigateur

Résolu/Fermé
sahar1994 Messages postés 36 Date d'inscription vendredi 5 août 2016 Statut Membre Dernière intervention 14 mars 2018 - 20 août 2016 à 23:36
sahar1994 Messages postés 36 Date d'inscription vendredi 5 août 2016 Statut Membre Dernière intervention 14 mars 2018 - 21 août 2016 à 18:43
Bonjour,
Bonjour,
je suis entrain de réaliser un siite e-commerce, pour realiser le panier j'ai utilisé les cookies, de telle façon que lorsque l'utilisateur(connécté est qui a un id_client) ajout qq chose à sa panier elle sera stocker, tous va bien mais lorsque je me connecte avec un autre client(id_different) il continu à stocker dans le méme panier...
voici mon code:


<?php
require_once $_SERVER['DOCUMENT_ROOT'].'magsin/details1.php';
$cat = $_GET['cat'];
$s_cat = $_GET['s_cat'];
$prix = $_GET['prix'];
$nom_product = $_GET['nom_product'];
$taille = $_GET['taille'];
$couleur = $_GET['couleur'];
$quantitie = $_GET['quantitie'];
$items = array();
$items[] = array(
'cat' => $cat,
's_cat' => $s_cat,
'nom_product' => $nom_product,
'prix' => $prix,
'taille' => $taille,
'couleur' => $couleur,
'quantitie' => $quantitie,
);
$domain = (($_SERVER['HTTP_HOST']) != 'localhost'?'.'.$_SERVER['HTTP_HOST']:false);
$query="SELECT * FROM `products` WHERE `cat`='".$_GET['cat']."' AND `s_cat`='".$_GET['s_cat']."' AND `nom_product`='".$_GET['nom_product']."' AND `prix`='".$_GET['prix']."'AND couleur='".$_GET['couleur']."' AND taille='".$_GET['taille']."'";
$query1=$bdd->prepare($query);
$query1->execute();
$query2 = $query1->fetchAll();
foreach($query2 as $row){
if($cart_id != ''){
$cartq = "SELECT * FROM cart WHERE id ='{$cart_id}'";
$cartq1=$bdd->prepare($cartq);
$cartq1->execute();
$cartq2 = $cartq1->fetchAll();
foreach($cartq2 as $cartq2){
$prv_items= json_decode($cartq2['items'],true);
$item_match = 0;
$new_items=array();
foreach((array)$prv_items as $pitem){
if($items[0]['cat'] == $pitem['cat'] && $items[0]['s_cat'] == $pitem['s_cat'] && $items[0]['prix'] == $pitem['prix'] && $items[0]['nom_product'] == $pitem['nom_product'] && $items[0]['taille'] == $pitem['taille'] && $items[0]['couleur'] == $pitem['couleur']){
$pitem['quantitie'] = $pitem['quantitie'] + $items[0]['quantitie'];
if($pitem['quantitie'] > $row['stock']){
$pitem['quantitie'] = $row['stock'];
}
$item_match = 1 ;
}
$new_items[] = $pitem;
}
}

if($item_match != 1){
$new_items = array_merge($items, (array)$prv_items);
}
$items_jason = json_encode($new_items);
$cart_expire = date("Y-m-d H:i:s",strtotime("+30 days"));
$query= "UPDATE cart SET items='{$items_jason}',expire_date='{$cart_expire}' WHERE id ='{$cart_id}'";
$stm1=$bdd->prepare($query);
$stm1->execute();
setcookie(CART_COOKIE,'',1,"/",$domain,false);
setcookie(CART_COOKIE,$cart_id,CART_COOKIE_EXPIRE,'/',$domain,false);
}



else
{
echo $row['nom_product']." added to your cart";

$items_json = json_encode($items);
$cart_expire = date("Y-m-d H:i:s",strtotime("+30 days"));
$query= "INSERT INTO cart (items,expire_date) VALUES ('{$items_json}','{$cart_expire}')";
$stm1=$bdd->prepare($query);
$stm1->execute();

$cart_id = $bdd->lastInsertId();
setcookie(CART_COOKIE,$cart_id,CART_COOKIE_EXPIRE,`/`,$domain,false);
}
}
?>







1 réponse

jordane45 Messages postés 38306 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 novembre 2024 4 705
21 août 2016 à 18:28
Bonjour,

Tu donnes le même nom à ton cookie en permancence .. normal qu'il n'en créé qu'un .....

Il faudrait que tu puisses lui donner un nom "variable" basé sur l'ID du user par exemple.

Sinon tu pourrais aussi stocker les données sous forme d'array dans un seul cookie... La clé de l'array pour savoir à qui appartiennent les données serait là aussi l'ID du user par exemple.

Tu peux t'appuyer sur l'exemple présent ici : https://www.php.net/manual/fr/function.setcookie.php
Dans le chapitre : Exemple #3 setcookie() et les tableaux

0
sahar1994 Messages postés 36 Date d'inscription vendredi 5 août 2016 Statut Membre Dernière intervention 14 mars 2018
Modifié par sahar1994 le 21/08/2016 à 18:46
merciiiiii :) ça fonctionne bien :D j'ai changer la valeur du cookie au valeur $_SESSION['id_client'] :) au fait c'étais mon premier contact avec les cookies et j'ai méme pas compris ce que ce passe dans le tuto :p
0