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 :

Opérateurs logiques et chaines de caractères


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2005
    Messages : 117
    Points : 57
    Points
    57
    Par défaut Opérateurs logiques et chaines de caractères
    Bonjour,

    J'ai un problème avec la condition suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($lastname_memory != $lastname && $firstname_memory != $firstname) {
    Je compare deux choses :
    un prénom avec un autre prénom et un nom avec un autre nom.

    Les deux devraient être identique pour que ma condition soit validée. Mais si le nom et le nom en mémoire ou le prénom et le nom en mémoire sont identiques cela me retourne le résultat comme si la condition était vérifiée.

    Il semble que la condition se comporte comme si elle contenant un OU au lieu du ET.

    D'avance merci pour votre aide !

  2. #2
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Bonjour,

    Les deux devraient être identique pour que ma condition soit validée
    différents plutôt non ?

    Fait un var_dump de tes variables avant le if pour être sur de leur contenu.
    Tout énigme a une solution ! Tout est question de discipline !

  3. #3
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 373
    Points
    19 373
    Par défaut
    Je pense que ta condition n'est pas adaptée à ce que tu recherches. Elle se comporte correctement, c'est juste qu'actuellement, tu vérifies une différence, et non pas une égalité...
    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Je ne réponds pas aux questions techniques en MP.

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2005
    Messages : 117
    Points : 57
    Points
    57
    Par défaut
    Je pense ne pas avoir été clair, je veux que la condition dans mon if soit vraie si :
    $lastname_memory est différent de $lastname ET $firstname_memory est différent de $firstname

  5. #5
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Tu as essayé de placer un var_dump juste avant pour voir le contenu ?
    Tout énigme a une solution ! Tout est question de discipline !

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2005
    Messages : 117
    Points : 57
    Points
    57
    Par défaut
    Je ne comprends pas bien l'utilité du var_dump, malgrè la lecture du manuel php...
    http://de3.php.net/manual/fr/function.var-dump.php

  7. #7
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    Ta condition est vrai si $lastname_memory est différent de $lastname ET $firstname_memory est différent de $firstname.
    Si tu vérifier sur si l'un d'eux est différent alors tu dois mettre le ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($lastname_memory != $lastname || $firstname_memory != $firstname)
    ça veux dire si l'un d'eux est différent de l'autre alors la condition sera vrai.
    A la recherche d'un film : http://chercher-un-film.com

  8. #8
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 373
    Points
    19 373
    Par défaut
    Citation Envoyé par JoN28fr Voir le message
    Je pense ne pas avoir été clair, je veux que la condition dans mon if soit vraie si :
    $lastname_memory est différent de $lastname ET $firstname_memory est différent de $firstname
    Dans ce cas là ton if est correct... Le problème vient d'ailleurs, vérifie le contenu de tes variables comme le dit Bebel.
    La fonction var_dump() permet d'afficher le contenu d'une variable
    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Je ne réponds pas aux questions techniques en MP.

  9. #9
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Citation Envoyé par JoN28fr Voir le message
    Je ne comprends pas bien l'utilité du var_dump, malgrè la lecture du manuel php...
    http://de3.php.net/manual/fr/function.var-dump.php
    Ca t'affiche le contenu et le type de tes variables. Ca va permettre de voir aussi s'il n'y a pas un espace en trop.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    echo '<pre>';
    var_dump($lastname_memory, $lastname, $firstname_memory, $firstname);
    Tout énigme a une solution ! Tout est question de discipline !

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    [Edit] Oups ! je retire ...
    Donc :
    if (Pierre != Roger ET Dupont != Durant) => OK (nom ET prénom différents)
    if (Pierre != Roger ET Dupont != Dupont) => PAS OK (meme nom)
    if (Pierre != Pierre ET Dupont != Durant) => PAS OK (meme prénom)

    C'est ca ?

  11. #11
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2005
    Messages : 117
    Points : 57
    Points
    57
    Par défaut
    le var_dump() me retourne systématiquement string(32) pour tous mes noms et prénoms....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var_dump($firstname_memory);
    echo " - ";
    var_dump($firstname);
    echo " - ";
    var_dump($lastname_memory);
    echo " - ";
    var_dump($lastname);
    Me retourne :
    string(32) "Daniel " - string(32) "Daniel " - string(32) "CHARTON " - string(32) "DUBUISSON "

  12. #12
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Donc logiquement tu ne devrais pas rentrer dans ton if, vu que les 2 prénoms sont identiques.

    Sauf si l'un des deux prénoms contient un caractère bizarre.
    Pour le voir essaye de comparer leur valeur hexa avec bin2hex

    Ou d'abord essaye de nettoyer tes variables avec trim
    Tout énigme a une solution ! Tout est question de discipline !

  13. #13
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Tu devrais peut être faciliter au parseur la tâche en utilisant les parenthèses et être sur de ton coup :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if( ( $lastname_memory != $lastname ) && ( $firstname_memory != $firstname ) )
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  2. [XL-2010] Les opérateurs de manipulation de chaines de caractères ne fonctionnent pas
    Par jpclabaux dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 31/07/2013, 19h22
  3. Réponses: 6
    Dernier message: 23/06/2008, 16h33
  4. Lire Une Chaine De Caractères
    Par Jonathan_Korvitch dans le forum C
    Réponses: 12
    Dernier message: 07/01/2003, 05h37
  5. Réponses: 2
    Dernier message: 06/12/2002, 07h50

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