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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé 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
    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 ?

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

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    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
    Membre éclairé 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
    Par défaut Algèbre Kafkaien non bolean
    Non, le pb ne vient pas de là !

    Merci en tt cas.

  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
    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 émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    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';

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

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    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

+ 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