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 conditionnel avec apostrophe


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 52
    Points
    52
    Par défaut Test conditionnel avec apostrophe
    Bonjour,

    Voilà j'ai un petit souci j'essaie de faire un test avec un if... jusque là, tout va bien...
    Un de mes premiers tests est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($lib == 'Tarif réduit'){echo" Accessible pour les -18ans, demandeurs d'emploi, 3ème âge, familles nombreuses (sous présentation d'une carte)."; }
    Mais mon second test ne marche pas, à cause de l'apostrophe que contient ma variable $lib (que je peux afficher, mais simplement le if qui ne marche pas)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if ($lib == 'Carnet d'abonnement'){echo" Contient 6 places valables pendant un an.";
    	}

  2. #2
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Bonjour,

    Deux possibilités :
    - utiliser les guillemets doubles
    - echapper l'apostrophe avec un antislash

    http://thierrylhomme.developpez.com/php/ultra_php/

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Points : 24
    Points
    24
    Par défaut
    Simplement parce que tu fermes trop top ton expression à tester.
    Ici ton if va tester si $lib == 'Carnet d'. En plus de cela, il ne comprendra pas pourquoi tu rajoutes après ça onnement. Si tu veux que ton test fonctionne, essaye avec des doubles quotes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if ($lib == "Carnet d'abonnement"){echo" Contient 6 places valables pendant un an.";
    	}

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 52
    Points
    52
    Par défaut
    J'ai bien testé les 2 solutions... que ce soit les guillemets doubles et l'antislash... aucun des deux ne me réécris ce dont j'ai besoin pour le Carnet d'abonnement...

    Et c'est bien pour ça que je voulais savoir si vous aviez d'autres idées...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    Fais un print $lib pour voir ce qu'il y a dedans

  6. #6
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 52
    Points
    52
    Par défaut
    Et c'est bien Carnet d'abonnement qui en ressort...

    Je vois vraiment pas ce qui cloche, et ça me bloque...

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    Essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if ($lib == "Tarif réduit"){echo " Accessible pour les -18ans, demandeurs d'emploi, 3ème âge, familles nombreuses (sous présentation d'une carte)."; }
    elseif ($lib == "Carnet d'abonnement"){echo " Contient 6 places valables pendant un an.";}
    else {echo "Cherche un peut il doit y avoir une couille dans ton code.";}

  8. #8
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 52
    Points
    52
    Par défaut
    La couille dans mon code apparaît clairement pour le carnet d'abonnement...

    Mais pourtant, ça me ressort bien ça quand je fais un echo... c'est à n'y rien comprendre...
    Même en testant avec un switch, ça ne marche pas...

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Points : 24
    Points
    24
    Par défaut
    Où et comment initialises-tu $lib?

  10. #10
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 52
    Points
    52
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $consultetarif = liste_tarifs();
    while($info = mysql_fetch_array($consultetarif)):
    $lib = $info['libelleTarif'];
    echo $lib;
    endwhile;
    Et mon if, ou switch, se trouve à l'intérieur de ma boucle while, juste après l'echo $lib, qui, je répète, me ressort très bien mon carnet d'abonnement...

  11. #11
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Points : 24
    Points
    24
    Par défaut
    Essaie d'enlever les caractères qui peuvent poser problème dans ta chaîne, en commençant par le quote et en continuant par l'espace.
    Utilises un str_replace sur ton $lib avant de faire ton test, et édites ton test qui devra(it) être comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($lib == "Carnetdabonnement"){

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    Arf, c'est vraiment pas terrible ce que tu fais !

    Comment ont été saisies les infos dans la base ?
    Il y a peut être eu un htmlspecialchars() ?

    Faire un test sur du texte, c'est pas top, le mieux et de tester sur un chiffre (int).

    Essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $consultetarif = liste_tarifs();
     
    while($info = mysql_fetch_array($consultetarif)){
         $lib = $info['libelleTarif'];
         $lib = htmlspecialchars_decode($lib)
         echo $lib;
    }

  13. #13
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par Dlteck2000 Voir le message
    Arf, c'est vraiment pas terrible ce que tu fais !
    Comment ont été saisies les infos dans la base ?
    ...
    Voilà la vraie question !
    Déterminer les traitements par un test sur un libellé, c'est vraiment pas top.
    Il faut tester sur un code, moins parlant mais plus strict, et tu peux ensuite récupérer le libellé par une simple table de correspondance.

    --- edit ---
    Sorry je m'enflamme, c'est exactement ce qui est prôné par Dlteck. Les grands esprits se rencontrent.

Discussions similaires

  1. Grep et Cut avec un test conditionnel
    Par vladimire dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 11/02/2008, 09h21
  2. Test conditionnel avec OU
    Par pegase.90 dans le forum Débuter
    Réponses: 5
    Dernier message: 16/11/2007, 15h03
  3. cmt inserer une chaine de caractere avec apostrophe
    Par dipajero dans le forum Oracle
    Réponses: 1
    Dernier message: 13/04/2006, 22h27
  4. [XPATH] [XML] [JAVASCRIPT] Pb de recherche avec apostrophe
    Par lenoil dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 21/02/2006, 14h28
  5. problème avec apostrophe
    Par nadds dans le forum Langage
    Réponses: 2
    Dernier message: 31/10/2005, 11h13

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