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

PHP & Base de données Discussion :

PHP 7.3 conditions and / or


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Avatar de LAB3W
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2022
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Janvier 2022
    Messages : 26
    Par défaut PHP 7.3 conditions and / or
    J'ai écris un code en "PHP 7.3.27-1~deb10u1 (cli) (built: Feb 13 2021 16:31:40) ( NTS )"

    Je vérifie une requête super simple et souhaite configurer soit en "true" soit en "false" :

    Soit je suis super-admin (root), soit je suis admin, soit je suis modérateur - je souhaite configurer une variable "avec status" $with_status à "false" pour afficher tous les contenus du site.
    OU ^^ je suis membre ou internaute seulement (donc) et je configure la variable $with_status à "true".

    Cela me permet "après" d'envoyer une requête SQL en demandant soit le contenu disponible (jc.content_right = 1) ou voir tous les contenu (où il faut être donc, authentifier et moderateur minimum) (jc.content_right = 0|5|8 donc sans envoyer jc.content_right)

    Le truc le plus simple du monde ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $with_status = (($root === true || $admin === true || $moderator === true) ? false : true); // pour la conpréhension j'ai ajouté des parenthèses ^^ - Info : parenthèses à mettre si vous écrivez la condition dans un echo :) 
    $req_status = $with_status === true ? ' ' : ' AND jc.content_right = 1 ';
     
    echo '<br />'.$req_status.' - ';
    Si une (ou plusieurs) des 3 demandes me retourne true alors je configure à false !

    //--

    A titre d'information, je ne vais pas écrire/configurer la variable $with_status style de manière fausse !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $with_status = $root === true && $admin === true && $moderator === true ? false : true;
    Cela signifirait : je suis ROOT ET je suis ADMIN ET je suis MODERATEUR - La chose impossible dirais-je !!! Je ne peut pas être tout cela à la fois.

    Soit une personne est super-admin, soit elle est administratrice, soit elle est modératrice et donc elle (la condition) me renverrait toujourstrue !

    //---

    Les développeurs PHP ont un problème mental depuis 2.3 ans 4 ? :/ ou je rêve. J'avais une différence (il y a quelques jours) de retour entre and et && - et entre or et || fascinant ! Je vous aime les développeurs PHP - ceux qui créaient le language !

    //---


    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <?php
    // J'ai des methods de ma classe user qui me retourne true ou false selon le status d'un utilisateur - donc vrai (et non pas 1) ou vide (rien et non pas 0)
    // Plus le status est fort les autres sont configurés en true jusqu'au status moderateur.
     
    // En étant authentifié (membre) : il peut-être soit super-admin, soit admin, soit modérateur (soit membre seulement).
     
    // je vous ai remplacé les method par de simple variables pour la simplicité de l'explication / de la demande.
     
    // ici je suis super-admin (donc admin / moderateur)
    $root = true;
    $admin = true;
    $moderator = true;
     
    // ici je suis admin (donc moderateur)
    $root = false;
    $admin = true;
    $moderator = true;
     
    // ici je suis moderateur
    $root = false;
    $admin = false;
    $moderator = true;
     
    // ici je suis internaute
    $root = ''; // ou false
    $admin = ''; // ou false
    $moderator = ''; // ou false
     
    //$with_status = $root == true || $admin == true || $moderator == true ? false : true;
    $with_status = $root === true || $admin === true || $moderator === true ? false : true;
    $req_status = $with_status === true ? ' ' : ' AND jc.content_right = 1 ';
     
    echo '<br />'.$req_status.' - ';
     
     
    $contents_req = 'SELECT jc.* FROM zw_contents jc WHERE (jc.content_id_tree = 1 ) '.$req_status.' ORDER BY jc.content_date_mod DESC LIMIT 0, 40';
     
    echo '<br />'.$contents_req.' ';
     
     
    ?>
    Cordialement,
    Romain

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 313
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 313
    Billets dans le blog
    17
    Par défaut
    J'avais une différence (il y a quelques jours) de retour entre and et && - et entre or et || fascinant !
    (and et &&) et (or et ||) n'ont jamais été strictement identiques. Ces opérateurs ont toujours eu une priorité différente https://www.php.net/manual/fr/langua...precedence.php
    => Remplacer && par and ou || par or ne donnera pas forcément un résultat identique

    Pour le reste, SNR trop bas Quel est le problème exactement ?

  3. #3
    Membre averti
    Avatar de LAB3W
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2022
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Janvier 2022
    Messages : 26
    Par défaut
    Je ne savais pas çà sur les opérateurs ! Mais je pense que tu dois te tromper ! J'ai lu la page sans lire ce que tu viens de me dire !

    Je sais faire une addition ou une soustraction et une multiplication et/ou une division - Je suis allé en cours élémentaire - primaire !

    Citation Envoyé par Séb. Voir le message
    (and et &&) et (or et ||) n'ont jamais été strictement identiques. Ces opérateurs ont toujours eu une priorité différente https://www.php.net/manual/fr/langua...precedence.php
    => Remplacer && par and ou || par or ne donnera pas forcément un résultat identique

    Pour le reste, SNR trop bas Quel est le problème exactement ?
    Le problème est que ma condition me retourne l'inverse :/ Je viens de l'expliquer plus haut !

    • Dans un if() les && (ou and) s'ajoutent - il faut que toutes les variables/conditions soient vrai !
    • Dans un if() les || (ou or) valident une des variable / condition - il y a besoin que d'une seule variable/condition soit vrai !


    Est-ce simple plus simple comme explication !?

    Là est le problème du dessus.

    Chose bizarre - c'est que çà fonctionnait bien jusqu'à présent.

  4. #4
    Membre averti
    Avatar de LAB3W
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2022
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Janvier 2022
    Messages : 26
    Par défaut
    NdMoi-même : En fait j'ai écris à l'envers moi-même ^^ ma variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req_status = $with_status === true ? ' AND jc.content_right = 1 ' : ' ';
    devait être comme çà ! Bizarre _

    Bonne journée !


    Cordialement,
    Romain

    //---------
    @LAB3W/O.Romain.Jaillet-ramey : +33 616213465
    S.I.R.E.N. (RCS) : 448854893
    Freelance | Consultant LAMP (W3C.Master : Analyste.SSI/Dev.OpS)

    LAB3W : Web and networks laboratory - InterNet engineering - Creator ZW3B :-: The Web
    Web Site : http://www.lab3w.com - Admin : https://admin.lab3w.fr - Portfolio : http://portfolio.lab3w.fr - Google Business : https://lab3w.business.site
    The Web Communication : https://www.zw3b.fr - https://www.zw3b.tv - https://www.zw3b.site - https://www.zw3b.net - https://www.zw3b.blog - API : http://api.zw3b.fr
    The Internet Protocol Version 10 is the accessibility between today's 2 IP networks - IPv4 and IPv6 : http://www.ipv10.net
    FACEBOOK : LAB3W (Entreprise Personnal) - LAB3W.ORJ (Professionnal Page) - ZW3B.FR (Communication Page)
    TWITTER : LAB3W_ORJ (Professionnal Page) - ZW3B_LAB3W (Communication Page)

  5. #5
    Membre averti
    Avatar de LAB3W
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2022
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Janvier 2022
    Messages : 26
    Par défaut
    Je vous écris cela pour votre compréhension (hors sujet) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
     
    $nombre = '10000';
    $nombre = '0';
     
    echo 'il y a '.$nombre.' lien'.($nombre <= 1 ? '' : 's').' sur mon site web <a href="https://www.zw3b.fr" title="ZW3B :-: The Web XXI">ZW3B</a> ! '; // il faut mettre entre parenthèses dans une echo
     
    ?>
    Tous le monde connaît

    Bonne journée !

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 561
    Billets dans le blog
    10
    Par défaut
    En complément, même si ce n'est visiblement pas le cas ici, il faut penser aux éventuels marqueurs "null" dans les tables de vérité :

    
    NON     |                    ET      | vrai    | inconnu | faux           OU      | vrai    | inconnu | faux
    --------+--------            --------+---------+---------+------          --------+---------+---------+-----
    vrai    | faux               vrai    | vrai    | inconnu | faux           vrai    | vrai    | vrai    | vrai
    inconnu | inconnu            inconnu | inconnu | inconnu | faux           inconnu | vrai    | inconnu | inconnu
    faux    | vrai               faux    | faux    | faux    | faux           faux    | vrai    | inconnu | faux
    
    

  7. #7
    Membre averti
    Avatar de LAB3W
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2022
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Janvier 2022
    Messages : 26
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    En complément........
    PHP 8.0 est une mise à jour majeure du langage PHP - N'ayez pas peur

    Elle contient beaucoup de nouvelles fonctionnalités et d'optimisations, incluant les arguments nommés, les types d'union, attributs, promotion de propriété de constructeur, l'expression match, l'opérateur nullsafe, JIT (Compilation à la Volée), et des améliorations dans le système de typage, la gestion d'erreur, et de cohérence.
    Que du bien pour notre language préféré !

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

Discussions similaires

  1. [MySQL] probleme pour updater selon condition php
    Par serna dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/02/2013, 13h32
  2. [APACHE] probleme PHP
    Par Steph666 dans le forum Apache
    Réponses: 6
    Dernier message: 17/12/2005, 13h33
  3. Réponses: 8
    Dernier message: 10/11/2005, 15h58
  4. Probleme Php et Mysql
    Par lemagicien dans le forum Requêtes
    Réponses: 13
    Dernier message: 18/10/2005, 14h09
  5. probleme php/posgresql
    Par voyageur dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 06/11/2004, 20h58

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