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 :

Utilisation de OR dans une condition


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : août 2005
    Messages : 3 905
    Points : 4 453
    Points
    4 453
    Par défaut Utilisation de OR dans une condition
    Bonjour,

    Ma question est débile mais je n'arrive pas à faire une condition qui vérifie si une chaine se trouve dans une autre :

    J'ai deux variables à vérifier : $titre, $tout

    $blork contient le mot recherché.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if  (((strpos("$titre", "$blork")) === false) || ((strpos("$tout","$blork")) === false))  {
        echo "La chaine '$blork' n'a pas été trouvé dans la cha? '$titre'";
    } else {
        echo "La chaine '$blork' a été trouvé dans la cha? '$titre'";
    }
    Biensur ca ne marche pas Pourtant j'ai bien respecté la syntaxe ?

    Normalement si le mot recherché est dans $titre ou dans $tout ou alors dans les deux, ca devrait m'afficher "La chaine '$blork' a été trouvé dans la cha? '$titre'"

    Merci
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  2. #2
    Membre expert
    Inscrit en
    janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Es-tu en php4?
    Parce qu'avant PHP5 la fonction strpos ne fonctionnait que pour chercher un caractère dans une chaine.
    En plus strpos() renvoie un entier et non un booléen.

    et enfin tu as dit "si la chaine $blork n'est pas dans $titre ou n'est pas dans $tout alors erreur"
    du coup si elle n'est que dans l'une des deux chaines ca fait une erreur quand meme

    Fais plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if ( (strstr($titre, $blork) === false) && (strstr($tout,$blork)) === false) ) 
    {  
    echo "La chaine '$blork' n'a été trouvée ni dans '$titre' ni dans '$tout'"; 
    } 
    else 
    {  
    echo "La chaine '$blork' a été trouvée dans '$titre' ou dans '$tout'";
    }

  3. #3
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Bonjour
    et tu tu essaies de virer quelque quote (simple et double)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if  (((strpos($titre, $blork)) === false) || ((strpos($tout,$blork)) === false))  {
        echo 'La chaine "'.$blork.'" n\'a pas été trouvé dans la cha? "'.$titre.'"';
    } else {
        echo 'La chaine "'.$blork.'" a été trouvé dans la cha? "'.$titre.'"';
    }
    car sinon la syntaxe semble correct en occurence l'utilisation du ===

    Edit:

    Avant de faire une double condition...p-e devrais-tu tester 1 condition à la fois en faisant un echo de ta condition du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    echo 'Condition 1-> '.(strpos($titre, $blork) === false)) ?  strpos($titre, $blork) : 'condition fausse';
    ...
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  4. #4
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : août 2005
    Messages : 3 905
    Points : 4 453
    Points
    4 453
    Par défaut
    Citation Envoyé par koopajah
    koopajah a écrit :
    Es-tu en php4?
    Parce qu'avant PHP5 la fonction strpos ne fonctionnait que pour chercher un caractère dans une chaine.
    En plus strpos() renvoie un entier et non un booléen.

    et enfin tu as dit "si la chaine $blork n'est pas dans $titre ou n'est pas dans $tout alors erreur"
    du coup si elle n'est que dans l'une des deux chaines ca fait une erreur quand meme

    Fais plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( (strstr($titre, $blork) === false) && (strstr($tout,$blork)) === false) ) { echo "La chaine '$blork' n'a été trouvée ni dans '$titre' ni dans '$tout'"; } else { echo "La chaine '$blork' a été trouvée dans '$titre' ou dans '$tout'"; }
    Ta fonction marche très bien, effectivement j'ai remarqué que strpos ne retourne pas de Boolean. Je ne comprends pas pourquoi les tutos disent de faire une condition simple avec false si ca retourne pas de boolean

    Merci à vous deux.
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  5. #5
    Membre expert
    Inscrit en
    janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Citation Envoyé par Aspic
    Ta fonction marche très bien, effectivement j'ai remarqué que strpos ne retourne pas de Boolean. Je ne comprends pas pourquoi les tutos disent de faire une condition simple avec false si ca retourne pas de boolean
    ben si tu avais fait strpos(...) == FALSE ca aurait fonctionné parce que est considéré comme FALSE le booléen false, la valeur 0 et la valeur NULL
    mais la, avec ===, ce que tu veux c'est vérifier que c'est bien le booléen FALSE et pas une autre des valeurs (enfin je me trompe peut etre là...)
    Mais bon il y avait le probleme du OR au lieu && de toute facon!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment faire pour utiliser plusieurs fonctions logiques dans une condition ?
    Par arnaudperfect dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 04/11/2010, 11h37
  2. utilisation d'une string dans une condition IF
    Par mamax29 dans le forum Langage
    Réponses: 1
    Dernier message: 05/05/2010, 09h30
  3. Utiliser un alias dans une condition.
    Par piscou51000 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/03/2009, 19h49
  4. Utilisation de () dans une condition
    Par yann123456 dans le forum Langage
    Réponses: 3
    Dernier message: 27/02/2009, 10h42
  5. Utiliser un fichier externe dans une condition
    Par jpl56 dans le forum Deski
    Réponses: 4
    Dernier message: 13/10/2006, 10h24

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