[RESOLU] Mettre un tableau dans un cookie

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Mettre un tableau dans un cookie

Re: [RESOLU] Mettre un tableau dans un cookie

par sirakawa » 05 sept. 2014, 19:16

exercice mal foutu qui utilise les cookies à contre-emploi, menfin...

Re: Mettre un tableau dans un cookie

par Incognito » 05 sept. 2014, 15:29

Arrétez tout....CAR J'ai trouver la solution !

La voila :
<!DOCTYPE html>
<html lang="fr">
<head>
	<meta charset="utf-8">
	<title>La boutique</title>
<?php
$mysqli=new mysqli('localhost','root','','projet_panier'); //connexion à la base de donnée


if(isset($_COOKIE['panier']))
{ 
$panier=$_COOKIE['panier'];
$choix_produit=$_GET['nom'];
$choix_prix=$_GET['prix'];
$panier_client=unserialize($panier);
$panier_client[]=['choix produit'=>$choix_produit, 'prix'=>$choix_prix];
$panier=serialize($panier_client);
$mysqli->query('INSERT INTO choix_user(choix_produit,choix_prix) VALUES ("'.$choix_produit.'","'.$choix_prix.'")');
}
else
{  
$choix_produit=$_GET['nom'];
$choix_prix=$_GET['prix'];
$panier_client=['choix produit'=>$choix_produit, 'prix'=>$choix_prix];
$panier=serialize($panier_client);
$mysqli->query('INSERT INTO choix_user(choix_produit,choix_prix) VALUES ("'.$choix_produit.'","'.$choix_prix.'")');
} 

setcookie('panier',$panier,time() +1296000);

$result=$mysqli->query('SELECT SUM(choix_prix) AS total_prix FROM choix_user');//requéte de la base
$row = $result->fetch_array();	
$total_prix=$row['total_prix'];
$result->free();

$result=$mysqli->query('SELECT choix_produit,choix_prix FROM choix_user');//requéte de la base
while ($row = $result->fetch_array())
$produits[$row['choix_produit']]=$row['choix_prix'];
$result->free();
?>
<?php print_r(unserialize($_COOKIE['panier'])) ?>
<h1>Bienvenue dans notre boutique</h1>
<h2>Voici votre panier:</h2>

<table border=1>
<th>Nom du produit</th><th>Prix du produit</th>
<?php foreach($produits as $n=>$p): ?> <!-- Affichage du tableau du panier-->
<tr><td><?php echo $n ?></td><td><?php echo $p ?></td></tr>
<?php endforeach ?>

<a href="index.php">Revenir à la boutique</a>
<br>
<a href="suppression.php">Supprimer mon panier</a>
<br>
<a href="delete_cook.php">Supprimer mes cookies</a>
<p>Le prix total de votre panier est de <?php echo $total_prix ?> euros.</p> 
Merci pour votre aide !

Re: Mettre un tableau dans un cookie

par Incognito » 05 sept. 2014, 15:22

Voici ma première page :
<!DOCTYPE html>
<html lang="fr">
<head>
	<meta charset="utf-8">
	<title>La boutique</title>
<?php

$mysqli=new mysqli('localhost','root','','projet_panier'); //connexion à la base de donnée

$result=$mysqli->query('SELECT produit_nom, produit_prix FROM produits'); //requéte

while ($row=$result->fetch_array())
$produits[$row['produit_nom']]=$row['produit_prix'];//création du tableau


?>
<h1>Bienvenue dans notre boutique</h1>
<h2>Voici la liste de nos produits:</h2>
<ul>
<?php foreach($produits as $nom=>$prix): ?> 
<form method="get">
<li>Le <?php echo $nom ?> : le prix est de <?php echo $prix ?> euros.</li> <a href="panier_cookie.php?nom=<?php echo $nom ?>&prix=<?php echo $prix ?>">Mettre ce produit dans mon panier.</a>
<?php endforeach ?>
</ul>
<?php
$result->free();
$mysqli->close();
?>
Pour info l'utilisation de cookie est obligatoire pour mon exercice...

Re: Mettre un tableau dans un cookie

par sirakawa » 05 sept. 2014, 12:54

Ce qui serait intéressant, ce serait de voir la première page,celle où se fait le choix initial.
Et je persiste à dire que la solution passe par l'emploi des sessions et non pas des cookies.

Re: Mettre un tableau dans un cookie

par Incognito » 05 sept. 2014, 10:48

Je viens d'essayer avec la fonction array_push et j'ai le même souci...

Re: Mettre un tableau dans un cookie

par Incognito » 05 sept. 2014, 09:42

Bonjour,

Merci pour vos réponses...mais j'ai toujours le même soucis...quand je clique sur mon premier produit tout va bien il est enregistré dans mon cookie, pour le second tout va bien aussi..mais dés que je clique sur un troisième article celui la remplace le deuxiéme dans mon cookie...

Que faire ?

Sinon rien a signaler pour ma base de données elle fonctionne trés bien...


Cordialement

Re: Mettre un tableau dans un cookie

par sirakawa » 05 sept. 2014, 08:27

@ moogli d'abord:
d'ailleurs la sérialisation est inutile dans ce cas.

@+
tu mets le tableau directement dans la session et php se débrouille avec ?

Re: Mettre un tableau dans un cookie

par moogli » 04 sept. 2014, 21:30

bonne question, c'est effectivement une solution plus usuelle.

d'ailleurs la sérialisation est inutile dans ce cas.

@+

Re: Mettre un tableau dans un cookie

par sirakawa » 04 sept. 2014, 13:05

Question asinique:
Pourquoi ne pas sérialiser le tableau et le mettre en Session?

Re: Mettre un tableau dans un cookie

par moogli » 04 sept. 2014, 12:40

salut,

tu veux plutôt dire que tune peux pas ajouter plusieurs articles dans le cookie ?

pour cela il te faut utiliser un tableau a deux dimensions (sinon c'est le bordel, d'ailleurs tu écrase les indexs ou où ajoute à la suite mais ne sais pas comment récupérer).

dans ton cas je verrais qu'elle que chose comme ceci :
<?php
$panier[]  =['produit'=>$idproduit, 'quantité'=>$qt];
pour par courir le pannier un foreach sur $panier te fournir un tableau à deux index (produit et quantité) qui te fournissent tes infos.

tu peux sérialiser / dé sérialiser ce tableau sans problème.


@+

Re: Mettre un tableau dans un cookie

par Incognito » 04 sept. 2014, 12:04

J'ai avancé dans mon code:

Tout se passe bien mais impossible de faire rentre plus de deux valeurs dans mon tableu :
<!DOCTYPE html>
<html lang="fr">
<head>
	<meta charset="utf-8">
	<title>La boutique</title>
<?php
$mysqli=new mysqli('localhost','root','','projet_panier'); //connexion à la base de donnée


if(isset($_COOKIE['panier']))
{ 
$panier=$_COOKIE['panier'];
$choix_produit=$_GET['nom'];
$choix_prix=$_GET['prix'];
$panier_client=unserialize($_COOKIE['panier']);
$panier_client[]=$choix_produit;
$panier_client[]=$choix_prix;
$_COOKIE['panier']=serialize($panier_client);
$mysqli->query('INSERT INTO choix_user(choix_produit,choix_prix) VALUES ("'.$choix_produit.'","'.$choix_prix.'")');
}
else
{  
$choix_produit=$_GET['nom'];
$choix_prix=$_GET['prix'];
$panier_client['choix_produit']=$choix_produit;
$panier_client['choix_prix']=$choix_prix;
$panier=serialize($panier_client);
$mysqli->query('INSERT INTO choix_user(choix_produit,choix_prix) VALUES ("'.$choix_produit.'","'.$choix_prix.'")');
} 

setcookie('panier',$panier,time() +1296000);

$result=$mysqli->query('SELECT SUM(choix_prix) AS total_prix FROM choix_user');//requéte de la base
$row = $result->fetch_array();	
$total_prix=$row['total_prix'];
$result->free();

$result=$mysqli->query('SELECT choix_produit,choix_prix FROM choix_user');//requéte de la base
while ($row = $result->fetch_array())
$produits[$row['choix_produit']]=$row['choix_prix'];
$result->free();
?>
<?php print_r(unserialize($_COOKIE['panier'])) ?>
<h1>Bienvenue dans notre boutique</h1>
<h2>Voici votre panier:</h2>

<table border=1>
<th>Nom du produit</th><th>Prix du produit</th>
<?php foreach($produits as $n=>$p): ?> <!-- Affichage du tableau du panier-->
<tr><td><?php echo $n ?></td><td><?php echo $p ?></td></tr>
<?php endforeach ?>

<a href="index.php">Revenir à la boutique</a>
<br>
<a href="suppression.php">Supprimer mon panier</a>
<br>
<a href="delete_cook.php">Supprimer mes cookies</a>
<p>Le prix total de votre panier est de <?php echo $total_prix ?> euros.</p> 

Mettre un tableau dans un cookie

par Incognito » 04 sept. 2014, 10:21

Bonjour à tous,

Voici mon probléme : je n'arrive pas a mettre mon tableau dans mon cookie.

Je m'explique:
Sur une premiére page le client choisi son produit. Ce produit (et son prix sont récupérés sur une autre page par la méthode POST);
Sur la seconde page un cookie est créée pour enregistrer le panier dans un cookie;
et à chaque clic sur un produit , le produit et son prix sont rajoutées dans le cookie;
le produit et son prix sont aussi enregistrée dans une base de donnée est affiché dans un tableau par la suite.
<!DOCTYPE html>
<html lang="fr">
<head>
	<meta charset="utf-8">
	<title>La boutique</title>
<?php
$mysqli=new mysqli('localhost','root','','projet_panier'); //connexion à la base de donnée


if(isset($_COOKIE['panier']))
{ 
$cookie_value=$_COOKIE['panier'];
$cookie_value=unserialize($cookie_value);
$choix_produit=$cookie_value['choix_produit'];
$choix_prix=$cookie_value['choix_prix'];
$panier=serialize($cookie_value);
$mysqli->query('INSERT INTO choix_user(choix_produit,choix_prix) VALUES ("'.$choix_produit.'","'.$choix_prix.'")');
}
else
{  
$choix_produit=$_GET['nom'];
$choix_prix=$_GET['prix'];
$panier_client['choix_produit']=$choix_produit;
$panier_client['choix_prix']=$choix_prix;
$panier=serialize($panier_client);
$mysqli->query('INSERT INTO choix_user(choix_produit,choix_prix) VALUES ("'.$choix_produit.'","'.$choix_prix.'")');
} 

setcookie('panier',$panier,time() +1296000);

$result=$mysqli->query('SELECT SUM(choix_prix) AS total_prix FROM choix_user');//requéte de la base
$row = $result->fetch_array();	
$total_prix=$row['total_prix'];
$result->free();

$result=$mysqli->query('SELECT choix_produit,choix_prix FROM choix_user');//requéte de la base
while ($row = $result->fetch_array())
$produits[$row['choix_produit']]=$row['choix_prix'];
$result->free();
?>

<h1>Bienvenue dans notre boutique</h1>
<h2>Voici votre panier:</h2>

<table border=1>
<th>Nom du produit</th><th>Prix du produit</th>
<?php foreach($produits as $n=>$p): ?> <!-- Affichage du tableau du panier-->
<tr><td><?php echo $n ?></td><td><?php echo $p ?></td></tr>
<?php endforeach ?>
<?php print_r(unserialize($panier)) ?>
<a href="index.php">Revenir à la boutique</a>
<br>
<a href="suppression.php">Supprimer mon panier</a>
<p>Le prix total de votre panier est de <?php echo $total_prix ?> euros.</p>
Alors voila si quelqu'un à la solution....

D'avance merci.

Cordialement