Bonjour à tous,

J'ai un souci qui je pense est d'une simplicité infantile pour beaucoup mais je bloque et j'ai besoin d'être aiguillé :)

Ce que je fais

Pour un exercice je dois impérativement stocker des informations concernant un panier dans un cookie valable 15 jours.
Je récupère l'id de mes produits grâce à un $_GET[''id].
Mon problème est que j'écrase à chaque selection d'un nouveau produit le précédent , je n'arrive donc pas à enregistrer le produit 1,5,7 par exemple que j'afficherai dans ma page panier.php.
Je me doute qu'il faille utiliser un tableau, j'ai essayé de nombreuse choses mais pour l'instant je n'avance pas.
Je souhaiterai si il est possible un code avec un exemple simple que je puisse appliquer et comprendre et aussi un léger descriptif pour que je visualise le cheminement .

Merci par avance du temps accordé à ma demande.

<?php
if(!isset($_COOKIE['enregistrement'])) {
    setcookie ('enregistrement',$_GET['id']);
    } else {
                $cookie = $_COOKIE['enregistrement'];
                $cookie = $_GET['id'];
                    $serializecookie=serialize($cookie);
                    setcookie ('enregistrement',$serializecookie);
                }
var_dump($serializecookie)
?>

Ce que je veux

Enregistrer plusieurs valeur de $_GET[''id]

Ce que j'obtiens

Je n'arrive qu'a enregistrer la derniière valeur qui écrase la précédente

6 réponses


Salut, il suffisait de regarder un peu sur Grafikart, il a fait un tutos : Créer un panier avec les $_SESSION

wucorp
Auteur

Salut, oui j'ai bien vu le tuto mais la je ne dois utilisé que des cookies et mon problème vient plus de fait de pouvoir enregistrer plusieurs valeurs dans un tableau provenant d'une variable dynamique. Je peux me tromper sur les termes mais je ne sais pas comment l'expliquer.

Salut, je pense que pour ajouter un élément à ton tableau tu devrais utiliser cette fonction php : array_push() pour insérer un élément à la fin d'un tableau.
Exemple: $stack = array("element1", "element2")
array_push($stack, "element3","element4");

 tu as aussi plutôt cette syntaxe $array[] = $element ($array = array(); if(!empty($_GET['id'])) $array[] = $_GET['id'];), qui peut s'utiliser mais celui ci créé un nouveau tableau 
 donc à toi de voir ce qui t'arrange comme solution.

Si je ne me trompe pas, on ne peut pas enregistrer de tableau dans les cookies; il faut donc passé par une chaine de caractère bien formaté.
Par exemple si il y a deux produits dans le panier, produit 1 et produit 2: on sauvegardera dans le cookie un string de la forme "1,2".
Quand on voudra recuperer les produits sous forme de tableau, il suffira d'explode le string.

<?php
// Recupération
$panier = $_COOKIES['produits']; // == "1,2"
$panier = explode(',',$panier); // == array("1","2");

// Ajout 
$panier[] = 3;
$produits = implode(',',$panier);
setcookie('produits', $produits);

?>

A noter aussi que les changement ne seront pris en compte qu'après la prochaine reqûete. Je conseil de copier le contenu de ton panier dans une variable au debut de ton script, et re-écrire le cookie avec le contenu de cette variable à la fin du script. Et le mieux pour l'accèder partout c'est: La variable globale $_SESSION ou une classe statique ou ecnore singleton

A toi de voir

salur,
tu sérialise ton tableau ou tu le met en json

@plus
Pierre

wucorp
Auteur

Bonjour,

Merci à tous , pour vos réponses , j'ai essayé de m'insiprer de ce vos remarques, j'en suis ici pour l'instant mais j'ai toujours le même problème je n'arrive à sauvergarder que la dernière valeur de mon $_GET[''id]

<?php
if(!isset($_COOKIE['enregistrement'])) {
    setcookie ('enregistrement',$_GET['id']);
    } else {
                $cookie = $_COOKIE['enregistrement'];
                $cookie = $_GET['id'];
                    $serializecookie=serialize($cookie);
                    setcookie ('enregistrement',$serializecookie);
                }
var_dump($serializecookie)
?>