Soucis de récupération de cookies dans une boucle while

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par tryan, 5 Janvier 2011.

Tags:
  1. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 239
    J'aime reçus:
    0
    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 :
    Code:
    <?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 :
    Ici ma boucle while en version simplifiée ou je compare les valeur des cookies aux identifiants en bd :
    Code:
    <?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
     
  2. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 887
    J'aime reçus:
    74
    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é ?
     
  3. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 239
    J'aime reçus:
    0
    Qu'entend tu par caractères parasites?
    Sinon, je ne sais plus sur "quelle pied danser" pour intégrer la boucle des cookies dans mon while..une suggestion ?
     
  4. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 887
    J'aime reçus:
    74
    Bein du genre un espace ou un caractère invisible quelconque.

    Si tu fais :

    Code:
     echo $nom." : v."$valeur."v <br/>";
    
    Les deux v sont bien collés à ta chaîne de caractères ?
     
  5. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 078
    J'aime reçus:
    295
    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()
     
  6. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 239
    J'aime reçus:
    0
    Non, tout semble correcte, pas d'espace, rien 8O !
    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:
       
    <?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/>';
       }
       }
    }
    }
    ?>
    
     
  7. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 239
    J'aime reçus:
    0
    @spout: je ne connaissais pas cette méthode et j'ai dailleurs du mal à comprendre comment ça fonctionne.
     
  8. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 078
    J'aime reçus:
    295
  9. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 239
    J'aime reçus:
    0
    J'ai vraiment du mal :(

    J'ai repris l'exemple :
    Code:
    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 :
    ..mais je ne pige toujours pas comment comparer mes id avec les valeurs du tableau :?:
     
  10. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 887
    J'aime reçus:
    74
    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().
     
  11. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 239
    J'aime reçus:
    0
    hargggggggggg :evil: 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:
    Code:
    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 :mrgreen: !
     
  12. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 887
    J'aime reçus:
    74
    Rmplace ton test sur l'égalité par un test avec un in_array() :

    Code:
    if(in_array($id_en_bd,$tableau_complet)){
    echo 'oui';
    }
    
     
  13. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 239
    J'aime reçus:
    0
    Avec votre aide (merci ;)), je suis enfin parvenu à un truc "viable" :D ..du moins je pense :
    Code:
    <?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
     
  14. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 887
    J'aime reçus:
    74
    Oui en passant par de l'Ajax.
     
  15. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 239
    J'aime reçus:
    0
    ARGGGG ... ajax ... je n'ai vraiment pas de bol ^^
     
  16. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 887
    J'aime reçus:
    74
    Au lieu de faire ton traitement au submit de la page, tu lance lors de l'évènement clic sur ton étoile une fonction ajax qui va faire le traitement en question, récupère le résultat, si besoin, va modifier l'endroit adéquat sur ta page.
     
  17. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 239
    J'aime reçus:
    0
    Dit comme ça, ça parait super simple mais comme je suis une burne total en ajax, c'est loin d'être gagné. Je suis tombé sur un site qui exploite ce système et je vais allé trifouiller le code source pour voir ..on ne sait jamais ^^.

    Merci pour les infos :).
     
Chargement...
Similar Threads - Soucis récupération cookies Forum Date
Soucis Meta description et Drupal Référencement Google 12 Octobre 2020
Soucis de description dans les resultats google Problèmes de référencement spécifiques à vos sites 10 Juin 2020
WordPress Soucis 404 suite changement structure permaliens Référencement Google 18 Juin 2019
Soucis d'affichage de publicité AdSense 4 Janvier 2018
soucis d'indexation Demandes d'avis et de conseils sur vos sites 27 Octobre 2017
Soucis d'affichage dans Google ! Référencement Google 22 Avril 2017
Soucis de classement ou incompréhension Problèmes de référencement spécifiques à vos sites 29 Octobre 2015
Prestashop - Soucis Url - Site multilingue Débuter en référencement 24 Juin 2015
Soucis de redirection sans www vers www URL Rewriting et .htaccess 13 Avril 2015
Soucis avec PageSpeed Crawl et indexation Google, sitemaps 23 Février 2015