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 du if


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 28
    Points : 19
    Points
    19
    Par défaut Utilisation du if
    Salut

    Quelqu'un peut m'expliquer un truc la....

    $toto=0;

    if($toto=='quitter'){
    echo "123";
    }




    Pourquoi ca m'affiche 123... ?

  2. #2
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Points : 751
    Points
    751
    Par défaut
    Fais un echo $toto; avant ton if voir si il a bien pris le 0 et test en mettant $toto=1;
    Aucune aide par MP, utilisez le forum.

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Je suppose que la raison est que tu compare un entier à une chaine
    essais:

    if (Integer.toString($toto)=='quitter'

  4. #4
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut pas logique
    déjà tu mets un chiffre pour ta variable donc elle est de type int.

    Ensuite si le code ci dessous...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if($toto=='quitter'){
        echo "123";
    }
    ...affiche 123, c'est que tu as du mal recopier le post ou qu'il y a autre chose entre la définition de la variable et le if().

    En tout cas, je ne voudrais pas reprendre un projet derrière toi. En quatre lignes tu définis une variable en int que tu testes ensuite en string avec des guillemets simples et si la condition est juste, tu affiches un string avec des guillemets doubles. Aucune rigueur...

    Donc pour ta question, tu écris $toto=""; au lieu de $toto=0; et ça fonctionnera.
    Business, Stratégie, Leadership
    Toujours à l'écoute du marché : Surtout en Suisse ! ;-)

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par zyongh
    déjà tu mets un chiffre pour ta variable donc elle est de type int.

    Ensuite si le code ci dessous...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if($toto=='quitter'){
        echo "123";
    }
    ...affiche 123, c'est que tu as du mal recopier le post ou qu'il y a autre chose entre la définition de la variable et le if().

    En tout cas, je ne voudrais pas reprendre un projet derrière toi. En quatre lignes tu définis une variable en int que tu testes ensuite en string avec des guillemets simples et si la condition est juste, tu affiches un string avec des guillemets doubles. Aucune rigueur...

    Donc pour ta question, tu écris $toto=""; au lieu de $toto=0; et ça fonctionnera.
    Désolé pour la syntaxe mais j'ai fais ça à la vite...

    bref tu me dis de remplacer $toto=0; par $toto=""; Ce qui est complétement différent. Dans mon problème $toto doit valoir la valeur 0.

    Imaginons que $toto est récupéré d'une autre page il peut etre int ou str,
    et dans ce cas il vaut 0.
    je fais alors mon test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $toto=0;
    if($toto=='quitter'){
        echo 'peu importe';
    }
    //Je tapes exactement ça comme code dans une page neuve ni plus ni moins...
    Cela va m'afficher peu importe alors que ma variable contient 0 .... Et j'aimerais savoir pourquoi...


    Ps :
    Citation Envoyé par J0r_x
    Fais un echo $toto; avant ton if voir si il a bien pris le 0 et test en mettant $toto=1;
    Si je met 1 pour $toto alors la ca marche rien ne s'écrit je ne passes pas dans la boucle.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut ben je répète
    Cela fonctionne en mettant $toto==1 pour la simple et bonne raison que la variable reste du même type (int).

    Si tu veux absolument utiliser le 0 il faut que tu le mettes en type chaîne donc tu fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $toto = strval(0);
     
    if($toto=='quitter'){
        echo '123';
    }
    Business, Stratégie, Leadership
    Toujours à l'écoute du marché : Surtout en Suisse ! ;-)

  7. #7
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Je sais pas si c'est ce que tu veux mais tu peux essayer avec un triple égal, comme ça il compare le type de données en plus du contenu.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  8. #8
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Points : 751
    Points
    751
    Par défaut
    ou $toto='0' $toto=''+0 etc ..
    Aucune aide par MP, utilisez le forum.

  9. #9
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut illogique
    Tu dis que la variable $toto est récupéré d'une autre page alors que là, tu prends un exemple avec $toto déclarée en local. Ce qui n'a rien à voir. Car si par exemple tu récupère $toto d'un formulaire même s'il vaut 0 par le passage ($_POST ou $_GET) il sera transformé en string. Ton problème n'a docn plus lieu.
    Business, Stratégie, Leadership
    Toujours à l'écoute du marché : Surtout en Suisse ! ;-)

  10. #10
    Membre averti Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Points : 434
    Points
    434
    Par défaut
    Bonjour,
    Ton probleme vient bien de la valeur 0 attribuée a $toto, qui dans ce contexte vaut... faux.
    Tu n'aurais pas ce probleme avec $toto=1.
    Tu as donc $toto ne vaut pas quitter (faux), or $toto=faux, donc l'egalité est respectée...

    Pour pallier a ce probleme on utilise l'egalite stricte ===
    ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    $toto=0;
     
    if($toto==='quitter'){
    echo "123";
    }
    ?>
    Ca permet de comparer des strings avec des valeurs nulles.
    Une subtilité du PHP et surement d'autres langages.
    Sohnic
    http://www.noctinfo.fr/

    (\ _ /)
    (='.'=) Voici Lapinou. Aidez-le à conquérir le monde en le reproduisant.
    (")-(")

  11. #11
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 28
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par sohnic
    Bonjour,
    Ton probleme vient bien de la valeur 0 attribuée a $toto, qui dans ce contexte vaut... faux.
    Tu n'aurais pas ce probleme avec $toto=1.
    Tu as donc $toto ne vaut pas quitter (faux), or $toto=faux, donc l'egalité est respectée...

    Pour pallier a ce probleme on utilise l'egalite stricte ===
    ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    $toto=0;
     
    if($toto==='quitter'){
    echo "123";
    }
    ?>
    Ca permet de comparer des strings avec des valeurs nulles.
    Une subtilité du PHP et surement d'autres langages.
    Sohnic


    Merci pour ton explication sohnic je comprends mieu

    Merci quand meme zyongh je m'étais surement mal exprimé mais j'attendais surtout une explication de pourquoi je rentres dans ma boucle et par pourquoi faut pas le faire ou le faire autrement

  12. #12
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut
    Le principal est que quelqu'un ait pu apporter une solution à ton problème.

    C'est tout l'intérêt des forums dans la mentalité de respect de developpez.com
    Business, Stratégie, Leadership
    Toujours à l'écoute du marché : Surtout en Suisse ! ;-)

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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