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 du Club
    Avatar de LAB3W
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2022
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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
    Points : 56
    Points
    56
    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 éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    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 ?
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Membre du Club
    Avatar de LAB3W
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2022
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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
    Points : 56
    Points
    56
    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 du Club
    Avatar de LAB3W
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2022
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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
    Points : 56
    Points
    56
    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 du Club
    Avatar de LAB3W
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2022
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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
    Points : 56
    Points
    56
    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 136
    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 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    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 du Club
    Avatar de LAB3W
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2022
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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
    Points : 56
    Points
    56
    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