Page 1 sur 1

petite question sur les cookies

Posté : 09 déc. 2019, 00:19
par nagyp
Bonjour à tous.
Je me pose une question toute simple imaginons que j'ai un cookie déjà existant qui se nomme "panier.
Et que mon utilisateur est visualisé un seconde produit.
Je voudrais que maintenant les deux produits soient dans mon cookie.
Est-ce possible et si oui comment je fais ?

Je mets mon code Php pour ceux qui auraient la gentillesse de me donner un petit coup de main.

COOKIE.PHP

Code : Tout sélectionner

<?php require('connexion.php'); ?> <?php $cookie_achat = $_GET['id']; //recuperation de la variable externe if (!isset($_COOKIE['panier']))// le cookie n'existe pas { echo "à creer si le cookie n'existe pas"; setcookie('panier', $cookie_achat , time()+10); // le cookie "panier" prend la valeur $achat_serialize, durée de vie 14 Jours--> } else { echo "le cookie existe deja"; echo"$cookie_achat"; //ajout des nouvelles donées au anciennes dans le cookie } // Récupération des éléments nom et prix par filtrage sur l'ID $result = $mysqli->query('SELECT produit_id, produit_nom, prix FROM produits WHERE produit_id = '.$cookie_achat); while ($row = $result->fetch_array()) $produits[$row['prix']] = $row['produit_nom']; // 19 => string 'produitB' (length=8) $total_amount = 0; // initialisation de la variable de calcule foreach ($produits as $prix => $select_nom): $total_amount += $prix; // addition du prix coréspondant ?> <?php endforeach ?> <!-- Récupération des informations et affichage --> <table border="1"> <tr> <td width='180px' align=center>nom du produit</td> <?php echo"<td width='180px' align=center>".$select_nom."</td>"; ?> <td width='80px' align=center>prix en € </td> <?php echo"<td width='80px' align=center>".$prix."</td>";?> </tr> </table> <p> <h3>Le montant total était de <?php echo $total_amount; ?> €</h3> </p>
ET pour ceux que ca interesse :

INDEX.PHP
<?php require ('connexion.php'); ?>


<h3>Nos produits :</h3>

<!-- Le formulaire va récuperer les informations dans la base de donné et affiché toute les lignes possible sur deux colones -->
<?php
$result = $mysqli->query('SELECT produit_id, produit_nom, prix FROM produits');
while ($data = $result->fetch_array())
{
?>
<li><a href="cookie.php?id=<?php echo $data['produit_id'] ?>"><?php echo $data['produit_nom']?> <?php echo $data['prix'] ?>€</a></li>
<?php echo"</tr>";
}

Re: petite question sur les cookies

Posté : 09 déc. 2019, 01:53
par @rthur
Pour faire cela il faut que tu modifies ton code pour mettre dans le cookie non pas juste l'ID du produit mais un tableau qui contient le ou les ID des produits.
Pour enregistrer un tableau au format texte (dans un cookie notamment ;) ) tu peux utiliser la fonction serialize()
https://php.net/serialize
Et pour à l'inverse retransformer une variable qui a été "serialisée", il faut utiliser unserialize() pour retrouver son format original (un tableau dans ton cas.
https://php.net/unserialize

Re: petite question sur les cookies

Posté : 09 déc. 2019, 22:30
par nagyp
Bonjour Merci de t'a réponse c'est cool d'avoir pris un peut de t'on temps pour m'aider.
Mais je ne vois pas comment je vais procéder pour rajouter une valeur à un tableau sans écraser celle existante. et du coup la perdre.
Je veut que à la sortie les données de toute les visites soit stocker dans le cookie.

Re: petite question sur les cookies

Posté : 10 déc. 2019, 08:28
par @rthur
Bah tu lis le cookie.
=> Soit il n'y a rien, et tu crées un tableau avec la valeur que tu veux mettre
=> Soit il y a déjà quelque chose et alors tu lis sa valeur, la unserialize() pour récupérer un tableau des précédentes valeurs auquel tu ajoutes la nouvelle.
Puis dans les deux cas tu serialize() le tableau et l'enregistre dans le cookie.

A noter que si tu as beaucoup de données alors il est préférable de ne pas stocker cette info dans un cookie (car limité en taille à quelques centaines de caractères) mais dans une session.
Si tu as énormément de données, alors il faut les stocker dans une base de données, et tu utilises un cookie juste pour stocker un identifiant de l'utilisateur qui te permettra de savoir qui il est pour ensuite interroger ta bdd.
Quoi qu'il en soit, commence déjà par faire l'exercice avec un cookie simple car le raisonnement est le même.

Re: petite question sur les cookies

Posté : 12 déc. 2019, 13:28
par nagyp
Merci à toi. J'avais complétement oublié la phase tu lis le cookie.
ma mémoire me fait des tours.