Soucis de récupération de cookies dans une boucle while
17 messages
• Page 1 sur 2 • 1, 2
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Soucis de récupération de cookies dans une boucle while
Bonjour,
J'essaye en vint de récupérer une liste de cookies dont les valeurs correspondent à des identifiants enregistrer en bd pour les comparer et afficher un texte différent si présent ou non sur le pc du client.
Voici donc 2 codes différents m'affichant le même résultat :
Ce qui me donne pour les 2 codes :
Ici ma boucle while en version simplifiée ou je compare les valeur des cookies aux identifiants en bd :
Mon soucis est que quelle que soit l'intégration que je fais du code "version 1" ou "version 2" au niveau de ma boucle while ... ça merde tout le temps et je ne comprend pas pourquoi
Un petit coup de pouce ne serait pas de refus.
Merci
J'essaye en vint de récupérer une liste de cookies dont les valeurs correspondent à des identifiants enregistrer en bd pour les comparer et afficher un texte différent si présent ou non sur le pc du client.
Voici donc 2 codes différents m'affichant le même résultat :
- Code: Tout sélectionner
<?php
//Version 1
if (isset($_COOKIE['moncookie'])) {
foreach ($_COOKIE['moncookie'] as $nom => $valeur) {
echo "$nom : $valeur <br/>";
}
}
//Version 2
if (isset($moncookie)){
while(list($nom, $valeur) = each($moncookie)) {
echo "$nom : $valeur<br/>";
}
}
?>
Ce qui me donne pour les 2 codes :
149 : 149
148 : 148
147 : 147
150 : 150
129 : 129
Ici ma boucle while en version simplifiée ou je compare les valeur des cookies aux identifiants en bd :
- Code: Tout sélectionner
<?php
while($teste = mysql_fetch_array($query))
{
//on affiche les infos
if($valeur == $teste['id'])
{
echo 'Cookie présent<br/>';
}
else
{
echo 'cookie absent<br/>';
}
//on ferme la boucle
}
?>
Mon soucis est que quelle que soit l'intégration que je fais du code "version 1" ou "version 2" au niveau de ma boucle while ... ça merde tout le temps et je ne comprend pas pourquoi
Un petit coup de pouce ne serait pas de refus.
Merci
-

UsagiYojimbo - WRInaute accro

- Messages: 8579
- Inscription: 23 Nov 2005
Re: Soucis de récupération de cookies dans une boucle while
Tu as vérifié que tu n'avais pas, dans un cas ou dans l'autre, de caractères parasites (genre un espace en trop) qui viendrait biaiser ton test d'égalité ?
-

UsagiYojimbo - WRInaute accro

- Messages: 8579
- Inscription: 23 Nov 2005
Re: Soucis de récupération de cookies dans une boucle while
Bein du genre un espace ou un caractère invisible quelconque.
Si tu fais :
Les deux v sont bien collés à ta chaîne de caractères ?
Si tu fais :
- Code: Tout sélectionner
echo $nom." : v."$valeur."v <br/>";
Les deux v sont bien collés à ta chaîne de caractères ?
-

spout - WRInaute accro

- Messages: 4382
- Inscription: 14 Mai 2003
Re: Soucis de récupération de cookies dans une boucle while
Ce ne serait pas plus simple si tu enregistrais les données du cookie avec serialize ?
http://php.net/manual/fr/function.serialize.php
Sauvegarde du cookie: serialize() (sauvegarde de l'array avec les id)
Lecture du cookie: unserialize()
http://php.net/manual/fr/function.serialize.php
Sauvegarde du cookie: serialize() (sauvegarde de l'array avec les id)
Lecture du cookie: unserialize()
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Re: Soucis de récupération de cookies dans une boucle while
Non, tout semble correcte, pas d'espace, rien
!
Par contre, je viens de me rendre compte que si je supprimais le "else" dans la version suivante, je n'avais plus de bugs mais je n'ai pas mon autre autre message "cookie absent". A l'origine, les messages sont en réalités des images (2 étoiles de différentes couleurs). Si cookies présent->étoile rouge, si absent->étoile verte d'ou le besoin du "else".
Par contre, je viens de me rendre compte que si je supprimais le "else" dans la version suivante, je n'avais plus de bugs mais je n'ai pas mon autre autre message "cookie absent". A l'origine, les messages sont en réalités des images (2 étoiles de différentes couleurs). Si cookies présent->étoile rouge, si absent->étoile verte d'ou le besoin du "else".
- Code: Tout sélectionner
<?php
while($teste = mysql_fetch_array($query))
{
//Version 1
if (isset($_COOKIE['moncookie'])) {
foreach ($_COOKIE['moncookie'] as $nom => $valeur) {
if($valeur == $teste['id'])
{
echo 'Cookie présent<br/>';
}
}
}
}
?>
-

spout - WRInaute accro

- Messages: 4382
- Inscription: 14 Mai 2003
Re: Soucis de récupération de cookies dans une boucle while
http://fr.wikipedia.org/wiki/S%C3%A9rialisation
En bref, ça transforme des variables en une chaine de caractères, pour pouvoir les sauvegarder facilement (base de données ou cookies)
Un exemple tout simple: http://codepad.org/JdyayahZ
En bref, ça transforme des variables en une chaine de caractères, pour pouvoir les sauvegarder facilement (base de données ou cookies)
Un exemple tout simple: http://codepad.org/JdyayahZ
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Re: Soucis de récupération de cookies dans une boucle while
J'ai vraiment du mal
J'ai repris l'exemple :
Qui me donne :
..mais je ne pige toujours pas comment comparer mes id avec les valeurs du tableau
J'ai repris l'exemple :
- Code: Tout sélectionner
echo '<pre>';
print_r($_COOKIE['moncookie']);
echo '</pre>';
$ids = serialize($_COOKIE['moncookie']);
echo $ids.'<br />';
$ids = unserialize($ids);
echo '<pre>';
print_r($ids);
echo '</pre>';
Qui me donne :
Array
(
[149] => 149
[148] => 148
[147] => 147
[150] => 150
[129] => 129
)
a:5:{i:149;s:3:"149";i:148;s:3:"148";i:147;s:3:"147";i:150;s:3:"150";i:129;s:3:"129";}
Array
(
[149] => 149
[148] => 148
[147] => 147
[150] => 150
[129] => 129
)
..mais je ne pige toujours pas comment comparer mes id avec les valeurs du tableau
-

UsagiYojimbo - WRInaute accro

- Messages: 8579
- Inscription: 23 Nov 2005
Re: Soucis de récupération de cookies dans une boucle while
Tu n'es pas obligé de parcourir tes deux tableaux. Tu peux en parcourir un et vérifier, à chaque tour, si une valeur équivalente existe dans l'autre array avec in_array().
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Re: Soucis de récupération de cookies dans une boucle while
hargggggggggg
quelque soit la façon que j'utilise et à partir du moment ou je retourne un "else", ça me fou la merde.
Pour faire simple, que ce soit mes 2 codes ou avec serialize, si quelque part dans mon code je fais:
Je me retrouve avec une succession de :"ouinonnonnonnonnon" par id.
Si je supprime le "else", mes "oui" correspondent bien aux cookies enregistrés mais j'ai également besoin du "else".
PHP m'énerve toujours autant
!
Pour faire simple, que ce soit mes 2 codes ou avec serialize, si quelque part dans mon code je fais:
- Code: Tout sélectionner
if($id_en_bd==$valeur_du_tableau){
echo 'oui';
}
else{
echo'non';
}
Je me retrouve avec une succession de :"ouinonnonnonnonnon" par id.
Si je supprime le "else", mes "oui" correspondent bien aux cookies enregistrés mais j'ai également besoin du "else".
PHP m'énerve toujours autant
-

UsagiYojimbo - WRInaute accro

- Messages: 8579
- Inscription: 23 Nov 2005
Re: Soucis de récupération de cookies dans une boucle while
Rmplace ton test sur l'égalité par un test avec un in_array() :
- Code: Tout sélectionner
if(in_array($id_en_bd,$tableau_complet)){
echo 'oui';
}
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Re: Soucis de récupération de cookies dans une boucle while
Avec votre aide (merci
), je suis enfin parvenu à un truc "viable"
..du moins je pense :
A vous de me dire si ça vous semble correcte.
Sinon et dans mes testes, "cookie oui" et "cookie non" sont de petites étoiles cliquables permettant de "sauvegarder" temporairement (par le biais des cookies) des annonces. En fonction de la présence des cookies ou pas sur le pc du client, l'étoile change de couleur. L'inconvénient, est qu'il faut recharger la page pour que le ou les cookies soient pris en considérations. Existe t'il un autre moyen sans recharger la page ?
Merci
- Code: Tout sélectionner
<?php
while($teste = mysql_fetch_array($query))
{
if(isset($_COOKIE['moncookie']) AND in_array($teste[id_en_bd],$_COOKIE['moncookie'])){
echo 'cookie oui';
}
else {
echo 'cookie non';
}
}
?>
A vous de me dire si ça vous semble correcte.
Sinon et dans mes testes, "cookie oui" et "cookie non" sont de petites étoiles cliquables permettant de "sauvegarder" temporairement (par le biais des cookies) des annonces. En fonction de la présence des cookies ou pas sur le pc du client, l'étoile change de couleur. L'inconvénient, est qu'il faut recharger la page pour que le ou les cookies soient pris en considérations. Existe t'il un autre moyen sans recharger la page ?
Merci
-

UsagiYojimbo - WRInaute accro

- Messages: 8579
- Inscription: 23 Nov 2005
Re: Soucis de récupération de cookies dans une boucle while
Oui en passant par de l'Ajax.
17 messages
• Page 1 sur 2 • 1, 2
Lectures recommandées sur ce thème :
- Google met à jour sa recherche locale - 15-09-2004
- Des bons outils pour les spécialistes des Web Analytics - 29-04-2009
- MSN HRS : des éditeurs de MSN évaluent la qualité des sites web - 02-12-2005
- Suivre le Tour de France 2008 avec Google Street View - 03-07-2008
- Plug-in d'opt-out de Google Analytics - 19-03-2010
- Bingbot : le nom officiel du robot de Bing - 29-06-2010
Qui est en ligne
Utilisateurs parcourant ce forum: enams90 et 0 invités
