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 :

Test valeur dans switch


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 152
    Points : 87
    Points
    87
    Par défaut Test valeur dans switch
    Bonjour

    Je me retrouve face à un problème étrange sur quelque chose de tout simple en apparence.
    Voici mon code
    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
    17
    18
    19
     
    <?php 
    $text=$field->original_value;
    global $language;
     
    if($language->language=="en"){
    	switch ($text){
    		case "A l'étranger":
    			$text="Abroad";
    			break;
    		case "En France":
    			$text="In France";
    			break;
    	}
     
    }
     
    print $text;
    ?>
    Au début je récupère la valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $text=$field->original_value;
    En déboguant avec Eclipse, je constate bien que ma variable $text prend la valeur "A l'étranger".
    Par contre lorsque je teste dans le switch (ou dans un if) si $text est égal à "A l'étranger"", le teste échoue.

    Par contre si je teste avec "En France" ça fonctionne bien.

    Est-ce que le fait qu'il y ai une apostrophe peut poser problème ?

    Auriez-vous une idée ?

    Merci

  2. #2
    Membre actif Avatar de jisig
    Homme Profil pro
    null
    Inscrit en
    Avril 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Indonésie

    Informations professionnelles :
    Activité : null

    Informations forums :
    Inscription : Avril 2014
    Messages : 146
    Points : 273
    Points
    273
    Par défaut
    As-tu vérifié que est bien égale à 'en' ?

    Jisig
    Même une feuille de papier est plus légère si on la porte à deux.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 152
    Points : 87
    Points
    87
    Par défaut
    oui, je rentre bien dans le switch.

  4. #4
    Membre actif Avatar de jisig
    Homme Profil pro
    null
    Inscrit en
    Avril 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Indonésie

    Informations professionnelles :
    Activité : null

    Informations forums :
    Inscription : Avril 2014
    Messages : 146
    Points : 273
    Points
    273
    Par défaut
    Normalement l'apostrophe ne devrait pas poser problème, ceci dit, je te conseille d'éssayer avec une variable plus simple comme 'test' et faire un echo de ta variable sur le site avant de la tester ce qui donnerait quelque chose de très similaire j'en conviens :

    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
    17
    18
    19
     
    <?php 
    $text=$field->original_value;
    global $language;
     
    if($language->language=="en"){
                  echo $text;
    	switch ($text){
    		case "test":
    			echo "youuuhouuuuu ça fonctionne !";
    			break;
    		case "En France":
    			$text="In France";
    			break;
    	}
     
    }
    print $text;
    ?>
    Même une feuille de papier est plus légère si on la porte à deux.

  5. #5
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 275
    Points
    3 275
    Par défaut
    Les tests sur des textes ne devraient jamais avoir lieu, et ceci est d'autant plus vrai avec un switch car en effet les apostrophes, les accents, les majuscules, les espaces, la ponctuation, l'encodage.. bref tout ça peut faire que deux chaînes ne sont pas égales alors qu'elles en ont l'air.
    Une chaîne qui sert à être tester (et non être afficher), doit uniquement être composée de caractères alphanumériques et être toujours aussi courtes que possible pour éviter toutes ambiguïtés.

    C'est probablement ce qui est la cause de ton problème.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 152
    Points : 87
    Points
    87
    Par défaut
    du coup comment je peux faire ?
    J'ai essayé de forcer le format de la variable en "string", de supprimer l'apostrophe mais sans succès...

  7. #7
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 275
    Points
    3 275
    Par défaut
    Et bien il te faut changer la valeur dans "$field->original_value", en y stockant "abroad" et "france" par exemple (utiliser l'anglais est une bonne idée pour des tas de raison, en particulier parce qu'il n'y a pas d'accent et que généralement les mots sont plus court donc moins de lettres à écrire).
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  8. #8
    Membre actif Avatar de jisig
    Homme Profil pro
    null
    Inscrit en
    Avril 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Indonésie

    Informations professionnelles :
    Activité : null

    Informations forums :
    Inscription : Avril 2014
    Messages : 146
    Points : 273
    Points
    273
    Par défaut
    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
    17
    18
    <?php 
    $text="test";
    global $language;
     
    if($language->language=="en"){
                  echo $text;
    	switch ($text){
    		case "test":
    			echo "youuuhouuuuu ça fonctionne !";
    			break;
    		case "En France":
    			$text="In France";
    			break;
    	}
     
    }
    print $text;
    ?>
    Si cela fonctionne ainsi c'est à toi de revoir la déclaration de ta variable et/ou de changer sa valeur. (ne sachant où tu la définis)

    Jisig
    Même une feuille de papier est plus légère si on la porte à deux.

  9. #9
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 152
    Points : 87
    Points
    87
    Par défaut
    Spartacusply>> C'est pour corriger un bug de Drupal que je suis obligée de faire ceci car il me retourne systématiquement le texte en français même quand je suis en anglais...

    Je ne peux pas définir la valeur retournée en amont car elle est retournée par Drupal.

    Finalement, n'ayant que 2 valeurs j'ai fini par faire un test si =="En France" alors "In France" sinon "Abroad", c'est très moche, mais ça fonctionne.

  10. #10
    Membre actif Avatar de jisig
    Homme Profil pro
    null
    Inscrit en
    Avril 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Indonésie

    Informations professionnelles :
    Activité : null

    Informations forums :
    Inscription : Avril 2014
    Messages : 146
    Points : 273
    Points
    273
    Par défaut
    Résolu ?
    Même une feuille de papier est plus légère si on la porte à deux.

  11. #11
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 152
    Points : 87
    Points
    87
    Par défaut
    je ne dirais pas que c'est résolu car j'ai trouvé une bidouille car je n'ai que 2 valeurs.
    Si demain, j'ai beaucoup plus de valeurs, comment puis-je faire ça plus proprement ?

  12. #12
    Membre actif Avatar de jisig
    Homme Profil pro
    null
    Inscrit en
    Avril 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Indonésie

    Informations professionnelles :
    Activité : null

    Informations forums :
    Inscription : Avril 2014
    Messages : 146
    Points : 273
    Points
    273
    Par défaut
    Remplacer les caractères de la variable avant de la tester ?

    genre rempalcer tout ce qui n'est pas alphanumérique par un '-' à l'aide de 'str_replace()' ?

    Jisig
    Même une feuille de papier est plus légère si on la porte à deux.

Discussions similaires

  1. Récupérer sur base d'un test de valeur dans xsl
    Par stujava dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 22/06/2009, 14h14
  2. Test sur valeurs dans un classeur excel
    Par driver dans le forum VB.NET
    Réponses: 6
    Dernier message: 02/02/2009, 17h19
  3. Plusieurs valeurs dans un switch
    Par Sakapatate dans le forum Langage
    Réponses: 3
    Dernier message: 14/06/2007, 07h54
  4. Réponses: 2
    Dernier message: 08/12/2005, 14h41
  5. Test d'existence d'une valeur dans une table
    Par dleu dans le forum Bases de données
    Réponses: 9
    Dernier message: 29/12/2004, 10h38

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