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 :

Logique booléenne [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Logique booléenne
    Je deviens fous.... j'ai un bête problème de logique booléenne et je ne m'en sors pas....

    Voici le 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
    20
    /**
    *   function panel accessible aux membres ? isMember() retourne True si membre connecté
    *	MUSTMBER = 1 s'il faut $etre membre 
    *	Etre connecté car il faut l'adresse mail qui se trouve en $_SESSION !
    *
    *	supposez vouloir dire en français => je peux afficher ce panneau si on est membre ET que je suis membre connecté !
    */	
    	function isMember()
    	{	
    //		print_r($this->TBL_screen.  CRLF ) ;
     		print("mber       : " . $this->TBL_screen[MUSTMBER] . CRLF) ;
     		$email = isset($_SESSION["email"]) ? 1 : 0 ;
    		print("email: " . $email . CRLF) ;						  							
    		print("session[email] : " . $email	. CRLF );   <= 112
    		
    		$mber = $this->TBL_screen[MUSTMBER] AND $email  ;
    		print("Mustmber: " . $mber . CRLF) ; 		<= 116
    		return(  $mber )  ; 
    	}
    Voici les displays écrans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    MUSTMBER => 1               => Indique qu'il faut $etre membre
    mber : 1                              Idem mais pour le test
    email: 0                               Le membre n'est pas connécté <= 112
    session[email] : 0                  idem
    Mustmber: 1                       ligne 116
    Bref, de part les données de test, il faut être membre pour accéder au pannea en question comme l'indique(MUSTMBER => 1 ) et je ne suis pas connecté puisque email = 0.....

    Et bien, la function IsMember() retourne 1 ......
    De plus et la je deviens fou, NOT true n'est pas égal à False....
    Je m'attendais à avoir 0 et bien je n'affiche riien.....

    Moi qui pensait que AND étalit idem à && et NOT true = false.... je n'ai plus mes cours d'algèbre boolean......
    Qui va me sortir de ce problème kafkaien et booléan ?
    Esteban

  2. #2
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    $_SESSION["email"] est peut-être définie MAIS vide

    isset($_SESSION["email"]) renvoie true... Ce qui amène $email à 1

    Faudrait essayer avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $email = ( (isset($_SESSION["email"])) and ($_SESSION["email"]!=='') ) ? 1 : 0 ;

  3. #3
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Algèbre Kafkaien non bolean
    Non, le pb ne vient pas de là !

    Merci en tt cas.
    Esteban

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ca serait plutot ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mber = ($this->TBL_screen[MUSTMBER] AND $email);
    Le = est prioritaire sur le AND.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    Attention à AND et OR, les comportements sont un peu particuliers.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    echo true AND false ? 'ok' : 'ko'; 
    //retourne 1
    echo true && false ? 'ok' : 'ko'; 
    //retourne ko
    explication qui vaut ce qu'elle vaut : Une syntaxe un peu exotique avec AND et OR (que l'on retrouve souvent avec "fonctionQuelconque() or die()" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo true AND print 'ok' OR print 'ko';
    echo false AND print 'ok' OR print 'ko';
    Pourfendeur de singletons en croisade

  6. #6
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Je rejoint Sabotage dans l'idée qu'il est nécessaire d'utiliser les parenthèses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo (true AND false) ? 'ok' : 'ko';
    renvoie ko

  7. #7
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Algèbre de bool
    J'ai quand même difficile à imaginer que 1 AND 0 = 1

    Voici encore mes displays;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    mber : 1
    email: 0
    session[email] : 0
    Mustmber: 1
    Qui proviennent de:

    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
     
    function isMember()
    {	
    //		print_r($this->TBL_screen.  CRLF ) ;
    print("mber       : " . $this->TBL_screen[MUSTMBER] . CRLF) ;
     
     
    //		$email = ( (isset($_SESSION["email"])) and ($_SESSION["email"]!=='') ) ? 1 : 0 ;
    $email = isset($_SESSION["email"]) ? 1 : 0 ;
     
    print("email: " . $email . CRLF) ;						  							
    print("session[email] : " . $email	. CRLF );
     
    $mber = $this->TBL_screen[MUSTMBER] AND $email  ;
    print("Mustmber: " . $mber . CRLF) ; 		
    return(  $mber )  ; 
    }
    J'ai essayé les "solutions" proposées sans succès.....

    Grand merci à celui qui me donnera la vérité
    Esteban

  8. #8
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $email = ( (isset($_SESSION["email"])) and ($_SESSION["email"]!=='') ) ? 1:0;
     
    ...
     
    $mber = ( ($this->TBL_screen[MUSTMBER]==1) AND ($email==1) );
    ??

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu n'as pas appliqué les modifications :
    il faut écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $x = ($a AND $b);
    // et pas $x = $a AND $b;
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Algèbre booléene
    Et cela c'est quoi ?

    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
    20
    21
    	function isMember()
    	{	
    //		print_r($this->TBL_screen.  CRLF ) ;
     		print("mber       : " . $this->TBL_screen[MUSTMBER] . CRLF) ;
    
    //		$email = ( (isset($_SESSION["email"])) and ($_SESSION["email"]!=='') ) ? 1 : 0 ;
     		$email = isset($_SESSION["email"]) ? 1 : 0 ;
    		
    		print("email: " . $email . CRLF) ;						  							
    		print("session[email] : " . $email	. CRLF );
    		
    		$mber =   ($this->TBL_screen[MUSTMBER] AND $email)  ;
    		print("Mustmber: " . $mber . CRLF) ; 
    		
    //		$email = ( (isset($_SESSION["email"])) and ($_SESSION["email"]!=='') ) ? 1:0;
    //		$mber = ( ($this->TBL_screen[MUSTMBER]==1) AND ($email==1) );	
    		print("Mustmber: " . $mber . CRLF) ; 
    			
    		return(  $mber )  ; 
    	}
    ;

    Qui m'affiche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    mber : 1
    email: 0
    session[email] : 0
    Mustmber: RIEN
    Mustmber: RIEN
    Esteban

  11. #11
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    La, le résultat est cohérent, $mber vaut bien FALSE.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  12. #12
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Algèbre booléenne
    Je ne savais pas qu'il était cohérent d'imaginer en algèbre booléenne (que j'ai pratiquée un an....) que FALSE était éventuellement différent de False ou de 0 mais pouvait être aussi RIEN !!!!!!!!
    Très cohérent, vive PHP........
    Esteban

  13. #13
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    FALSE n'est pas différent de False ou FaLSe.
    Par contre FALSE est different de 0 ; 0 est un entier, FALSE est un booléen.
    0 est équivalent à FALSE lorsqu'il est transtypé en booléen.

    Ta variable ne vaut pas "RIEN", elle vaut FALSE.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  14. #14
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Algèbre booleenne
    Et afficher RIEN c'est afficher FALSE ? Cohérent.....
    Esteban

  15. #15
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je suppose que tu veux dire que PHP n'affiche rien pas qu'il affiche "RIEN".
    echo() affiche des chaines de caractères, pas des booléens ; le transtypage de FALSE donne ""
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  16. #16
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Algèbre boolérnne
    Bon, je décroche, c'est résolu !!!!!!!!!!!!!! Mais à tous, faites attention à la nuance elle vaut son pesant d'or.....
    Esteban

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

Discussions similaires

  1. clic et logique booléenne avec tkinter
    Par Kurodiam dans le forum Général Python
    Réponses: 6
    Dernier message: 11/03/2014, 18h33
  2. Opérations booléennes et logique binaire en PHP
    Par Invité dans le forum Langage
    Réponses: 0
    Dernier message: 10/03/2011, 16h48
  3. Commentaires article sur la logique booléenne
    Par bredelet dans le forum Mathématiques
    Réponses: 7
    Dernier message: 12/09/2010, 12h36
  4. Réponses: 1
    Dernier message: 14/02/2010, 21h47

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