Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1197 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Mise a jour d un cookie

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Mise a jour d un cookie

n°227305
nidosaur
Hugh !^.
Posté le 12-10-2002 à 17:16:27  profilanswer
 

Je réalise un caddie d un site de commerce electronique, je met mes cookies a jour en début de page, cette meme page devant par la suite recuperer les valeurs du cookies pour mettre a jour le caddie. Je suis confronté au pb suivant:

Citation :

Bien que mettant mes cookies a jour en début de page, la page récupere les anciennes valeurs du cookie, aussi pour avoir accés a mes nouvelles valeurs je dois faire un refresh de ma page... Je pense que j ai du foiré qqch dans ma programmation mais je vois pas quoi :/ ... Qqn a une idée


 
Ci-joint le code en début de page qui met a jour mon cookie
(index.php ligne 1->29)

Code :
  1. <?
  2. if ($recalculer)
  3. {
  4. $i=0;
  5. $arr2 = array();     //Declaration d un tableau
  6. $arr = explode ("&",$caddie); //Recup des produits caddie
  7. foreach ($arr as $k=>$elem)
  8. {
  9.  $i++;
  10.  if ($i%2 == 1)
  11.  {
  12.   $j=($i+1)/2;
  13.   $var="quantite"."$j";
  14.   $var2=${$var};
  15.   if ($var2 > 0)
  16.   {
  17.    array_push($arr2,"$elem" );
  18.    array_push($arr2,"$var2" );
  19.   }
  20.  }
  21.  if ($i%2 == 0)
  22.  {
  23.  }
  24.  ${"c_$k"} = $elem;
  25. }
  26. $val = implode("&",$arr2);
  27. setcookie ("caddie","$val", time()+144000);
  28. }


et le code qui affiche les valeurs du cookie dans cette meme page(index.php ligne ... trés loin)

Code :
  1. if ($caddie)
  2. {
  3.  $valeur=0;
  4.  $fdp=0;
  5.  $poids=0;
  6.  $i=0;
  7.  $arr = explode ("&",$caddie);
  8.  $nbre = sizeof($arr) / 2;
  9.  ?><form method="post" name="commander" action="<? echo $PHP_SELF."?".SID ?>"><?
  10.  foreach ($arr as $k=>$elem)
  11.  {
  12.   $i++;
  13.   if ($i%2 == 1)
  14.   {
  15.    $p = $elem;
  16.   }
  17.   if ($i%2 == 0)
  18.   {
  19.    $prixresult = @mysql_query ("SELECT * FROM produit WHERE num_pro='$p'" );
  20.    $prt = mysql_fetch_array($prixresult);
  21.    //Calcul du total de la cmd
  22.    $valeur+=$elem*$prt[prix];
  23.    //Calcul des fdp de la cmd
  24.    if ($prt[num_livraison])
  25.    {
  26.     $livresult = @mysql_query ("SELECT * FROM livraison WHERE num_livr='$prt[num_livraison]'" );
  27.     $lvr = @mysql_fetch_array($livresult);
  28.     $fdp+=$lvr[prix_livr]*$elem;
  29.    }
  30.    else
  31.    {
  32.     $poids+=$prt[poids]*$elem;
  33.    }
  34.    ?><tr class=produit><td><? print replace($prt[nom_pro]); ?></td><td align="right"><input type=text name="quantite<?print replace($i/2); ?>" style="width:30px" value="<? print replace($elem); ?>" maxlength="3"></td><td align="right"><? print replace($prt[prix]); ?> ?</td><td align="right"><? print replace($prt[prix]*$elem); ?> ?</td></tr><?
  35.   }
  36.   ${"c_$k"} = $elem;
  37.  }
  38.  // Calcul de la livraison poids
  39.  $livresult = @mysql_query ("SELECT * FROM livraison WHERE poidmin<'$poids' AND poidmax>'$poids' ORDER BY prix_livr ASC" );
  40.  $lvr = @mysql_fetch_array($livresult);
  41.  $fdp += $lvr[prix_livr];
  42.  $valeur +=$fdp;
  43. }

mood
Publicité
Posté le 12-10-2002 à 17:16:27  profilanswer
 

n°228834
berceker
BERCEKER UNITED
Posté le 16-10-2002 à 17:26:38  profilanswer
 

Je n'ai pas trop compris le script que tu as posé mais je vais juste te donner une info!
si tu creer un cookie et que tu l'appelle sur le meme temps de vie que ton script il ne la verras pas car tu lui demande de recuperer un cookie qui n'est meme pas encore envoyer au client donc il faut attendre qu'il le recoive et apres tu pourras lire ça nouvelle valeur!


---------------
Si je suis près de toi c'est soit pour t'embrasser ou te croquer, alors à ce moment là rappelle toi de ce que tu m'as fait. du bien ou du mal?
n°228847
ethernal
Chercheur de vérité...
Posté le 16-10-2002 à 17:58:01  profilanswer
 

j'ai pas lu tout non plus en détail (pas le temps)... donc, je ne situe pas bien le problème ;)
 
qq conseils :
1. utilises serialize, unserialize au lieu de t'amuser à exploder manuellement (void www.php.net)
2. les cookies pour un caddie c'est pas trop conseillé
3. un exemple d'algo :

Code :
  1. //prendre les valeurs actuelles
  2. $cadie= unserialize($HTTP_COOKIE_VARS['cadie']);
  3. if (is_array($caddie)){
  4.   echo 'quantité de l'article : '. $caddie['nom_article'];
  5. }
  6. //mettre à jour
  7. $caddie['nouvel_article']=2;
  8. setcookie('caddie', serialize($caddie), time()+3600);


---------------
...oups kernel error...
n°228883
Sh@rdar
Ex-PhPéteur
Posté le 16-10-2002 à 18:37:34  profilanswer
 

je complète la réponse de berceker, après un setcookie, rien de mieux qu'un header(), sinon ça va pas.
 
 
pour un caddie rien de tel que des sessions...


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Mise a jour d un cookie

 

Sujets relatifs
DREAMmx et PHP 3[PHP] Détecter le nom de la page en cours
[PHP-MYSQL]Conversion dateASP & PHP
[PHP] Différentes facon de concevoir un caddie?[PHP] Création de variables dans une boucle et récupération?[Règlé]
[PHP] Passage de paramètre[Php/MySQL] Pb, pas de retour à la ligne quand je reccupère la BDD ...
[PHP/MySQL] Je ne comprends pas ce qui cloche ds mon script...[PHP + MySQL] Comment envoyer " l'etat " d'une checkbox ds une BDD ?
Plus de sujets relatifs à : [PHP] Mise a jour d un cookie


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR