IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Comparaison de chaîne pas le même résultat sous IE et Firefox


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 34
    Points : 13
    Points
    13
    Par défaut Comparaison de chaîne pas le même résultat sous IE et Firefox
    Bonjour,

    Je suis face à un problème, je tente de comparer une chaine résultant d'un tableau, et je n'ai pas le bon résultat sous IE. avec Firefox pas de pb.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    include_once('categories_array.php');
    reset($categories_array);
    $category=$_POST['category'];
    foreach ($categories_array as $key => $value)
    { 
    list($category_name) = $value;
    if ( strcmp(strtolower($category_name),$category) == 0)
    {
    $category = $key;
    }
    }
    extrait du fichier categories_array.php:

    $categories_array = array ("1" => array ("Arts, Antiquités"), "22" => array ("Arts, Antiquités : Architecture, Matériaux"), "129" => array ("Arts, Antiquités : Architecture, Matériaux : Eléments d'architecture"), "130" => array ("Arts, Antiquités : Architecture, Matériaux : Jardin, Extérieur, Ferronnerie"), "131" => array ("Arts, Antiquités : Architecture, Matériaux : Matériaux de construction"))

    Sous firefox: OK pour toutes les catégories
    Sous IE: Ca passe pour la catégorie id=1 et 22 mais pas pour 129

    Je suppose que cela est dû au caractère UTF8 comme par exemple 'd''.

    Comment le résoudre ?

    Merci.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu pourrais nous préciser ce qu'il se passe quand "ca ne passe pas" ?

    Sinon, je ne comprends pas bien ce que je cherche à faire ton code :
    - a quoi sert le reset() au début ?
    - pourquoi $categories_array est composé de tableaux d'une seul entrée ?
    - pourquoi utiliser strcmp() plutot que == ?
    - pourquoi la catégorie devient la clef quand on a trouvé un élément ? et pourquoi continue t-on de chercher étant donné qu'on ne peut plus rien trouver ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Tu pourrais nous préciser ce qu'il se passe quand "ca ne passe pas" ?
    Rien, mon id de catégorie n'est pas récupérer sous IE

    Sinon, je ne comprends pas bien ce que je cherche à faire ton code :
    A récupérer l'Id de la catégorie, résultant d'une autocomplétion dans un input
    - a quoi sert le reset() au début ?
    A repositionner mon tableau au début
    - pourquoi $categories_array est composé de tableaux d'une seul entrée ?
    Parce que c'est un tableau résultant d'un script de boucle récursif (au lieu de la méthode intervallaire) pour construire un arbre de catégorie

    - pourquoi utiliser strcmp() plutot que == ?
    Parce que je l'ai fait et que cela ne fonctionne pas non plus
    - pourquoi la catégorie devient la clef quand on a trouvé un élément ?
    Pour pouvoir l'ajouter dans une table.
    et pourquoi continue t-on de chercher étant donné qu'on ne peut plus rien trouver ?
    Pas compris la question ???

    Merci

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    A repositionner mon tableau au début
    foreach() pars toujours du début du tableau.

    Pas compris la question ???
    Tu cherches $category dans ton tableau via une boucle.
    Une fois que tu l'as trouvé, tu lui donnes une valeur numérique.
    Donc dans tous les tours de boucle suivant tu ne trouveras plus rien.


    Rien, mon id de catégorie n'est pas récupérer sous IE
    A quoi le vois-tu ?
    Ton bout de code ne nous indique pas cette partie.

    Sinon c'est très étrange.
    Essai un var_dump($_POST['category']) sur les deux navigateurs.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par sabotage Voir le message
    foreach() pars toujours du début du tableau.
    Merci, je ne savais pas

    Tu cherches $category dans ton tableau via une boucle.
    Une fois que tu l'as trouvé, tu lui donnes une valeur numérique.
    Donc dans tous les tours de boucle suivant tu ne trouveras plus rien.
    C'est vrai donc un exit() serait le bienvenue.

    A quoi le vois-tu ?
    Ton bout de code ne nous indique pas cette partie.
    A mon id qui est à vide dans ma table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $sql = "INSERT INTO adnnonces (category, userid, user, name, surname, street, zip, city, state, country, phone1, phone2, email, web,
    						ad_type, ad_headline, ad_text, ad_condition, ad_price, ad_liv, date_created, date_lastmodified,
    						flag_featured, flag_top, flag_commercial, published
    						)
    						VALUES (
    						'$category', '$userid', '$username', '$name', '$surname', '$street', '$zip', '$city', '$state', '$country',
    						'$phone1', '$phone2', '$email', '$web', '$ad_type', '$ad_headline', '$ad_text',
    						'$ad_condition', '$ad_price','$ad_liv', CURRENT_DATE(), CURRENT_DATE(),
    						'$flagFeatured', '$flagTop', '$flagCommercial', '$publishAd'
    						)";
    Sinon c'est très étrange.
    Essai un var_dump($_POST['category']) sur les deux navigateurs.
    Même résultat, avec firefox mon id est incrémenté avec IE à vide.

    Merci pour tes réponses Sabotage.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est vrai donc un exit() serait le bienvenue.
    un break; même

    Même résultat, avec firefox mon id est incrémenté avec IE à vide.
    tu veux dire que $_POST['category'] est vide avec IE ?
    tu pourrais dans ce cas nous montrer le formulaire dont il provient ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Nan, nan le $_POST['category'] n'est pas vide (j'ai fait un echo et cela m'affiche bien le post de la catégorie) en fait cela ne passe pas dans la condition du if .

    Donc mon $category reste avec la chaîne de caractère au lieu d'avoir le $key qui correspond à l'id dans la table.

    Merci pour l'astuce du break Sabotage, j'ai répondu trop vite

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Bon reprenons calmement.
    Que valent dans le cas IE et dans le cas Firefox $_POST['category'] et $sql ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Je suis calme, pas de pb.

    Cas IE - Firefox - catégorie Arts et Antiquités:
    $_POST['category'] = Arts et Antiquités
    Passe dans la condition 'if' et le $category = $key donc dans ce cas $key=1

    Cas IE - Arts, Antiquités : Architecture, Matériaux : Eléments d'architecture

    $_POST['category'] = Arts, Antiquités : Architecture, Matériaux : Eléments d'architecture
    Ne passe pas dans la condition 'if' et le $category reste à Arts, Antiquités : Architecture, Matériaux : Eléments d'architecture
    Donc $sql n'est pas bon puisque category reçoit une chaîne au lieu de l'id donc rien


    Cas Firefox - Arts, Antiquités : Architecture, Matériaux : Eléments d'architecture

    $_POST['category'] = Arts, Antiquités : Architecture, Matériaux : Eléments d'architecture
    Passe dans la condition 'if' et le $category=129 ce qui est bon.

    Je pense qu'il y a un retour charriot, un caractère invisible qui traine mais ou ???

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pourquoi tu fais un strtolower() si le post renvoit un élément en majuscule et que le tableau aussi contient des éléments avec des majuscules ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Mon tableau n'est pas en majuscules, la 1ère lettre est en Majuscules, tandis que le post lui est en minuscule d'où le strtolower .

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Dans le message ou tu as fais un recapitulatif, tu avais indiqué le $_POST avec des majuscules.

    De toute facon le probleme ne peux pas venir du bout de code que tu nous as mis.
    Si le resultat est différent sur les navigateurs, il y a forcemment un probleme sur une etape HTTP/HTML.

    Essaie de faire un echo md5($_POST['category'] dans les deux cas.
    Ca confirmera peut etre que les deux navigateurs n'envoient pas la meme chose.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Désolée de t'avoir induit en erreur.

    Alors le $_post sous IE donne:
    1adeab8917b63bf8c193d38ec1c16b3d

    et sous firefox:
    1adeab8917b63bf8c193d38ec1c16b3d


    donc la même chose

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Bon sortons les outils de dissection on va voir quel element réagit differement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    include_once('categories_array.php');
    $category=$_POST['category'];
     
    foreach ($categories_array as $key => $value)
    { 
    list($category_name) = $value;
    echo $key . ':' . $category . '==' . $category_name;
    if ( strcmp(strtolower($category_name),$category) == 0)
    {
    $category = $key;
    echo ' EGAL<br>';
    }
    else {
    echo ' DIFFERENT<br>';
    }
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Trousse à outils sortis, merci Sabotage

    Résultat sous IE:

    1:arts, antiquités : architecture, matériaux : eléments d\'architecture==Arts, Antiquités DIFFERENT
    22:arts, antiquités : architecture, matériaux : eléments d\'architecture==Arts, Antiquités : Architecture, Matériaux DIFFERENT
    129:arts, antiquités : architecture, matériaux : eléments d\'architecture==Arts, Antiquités : Architecture, Matériaux : Eléments d'architecture DIFFERENT
    QUESAKO ???? Pb d'antislashes

    Résultat sous Firefox:
    1:arts, antiquités : architecture, matériaux : eléments d\'architecture==Arts, Antiquités DIFFERENT
    22:arts, antiquités : architecture, matériaux : eléments d\'architecture==Arts, Antiquités : Architecture, Matériaux DIFFERENT
    129:arts, antiquités : architecture, matériaux : eléments d\'architecture==Arts, Antiquités : Architecture, Matériaux : Eléments d'architecture DIFFERENT

    Même chose mais il arrive tout de même à passer dans la condition ... whaouuuuuuuuuu

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Rectification, suite à ta modification de code, sous firefox le $sql n'es pas bon, l'id de la catégorie n'est pas alimenté.

  17. #17
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu dois avoir les magic_quotes activés.
    Si tu as la possibilité de le faire, desactive les car c'est plus embêtant qu'autre chose.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Je n'ai pas la possibilité de les désactivée, je suis sur un mutualisé.

    Je n'ai plus qu'à jouer avec les stripslashes .

    Merci Sabotage, et je garde la trousse à outils

  19. #19
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux toujours essayer avec un .htaccess
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php_flag magic_quotes_gpc off
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Sous OVH c'est:
    SetEnv MAGIC_QUOTES 1

    Mais cela ne fonctionne toujours pas sous IE.

    129:arts, antiquités : architecture, matériaux : eléments d'architecture==arts, antiquités : architecture, matériaux : eléments d'architecture DIFFERENT

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/01/2015, 13h45
  2. Réponses: 0
    Dernier message: 26/05/2010, 11h24
  3. La balise hr n'a pas le même rendu sous IE et firefox. (décalage sous ie)
    Par Marc22 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 11/03/2010, 15h26
  4. Réponses: 1
    Dernier message: 31/01/2008, 17h13
  5. Le style CSS ne donne pas le même résultat entre IE7 et Firefox
    Par beegees dans le forum Mise en page CSS
    Réponses: 13
    Dernier message: 21/09/2007, 15h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo