Partage
  • Partager sur Facebook
  • Partager sur Twitter

isset, !empty, NULL

Pour y voir bien clair...

Sujet résolu
    4 décembre 2005 à 3:20:12

    Bonjour tout le monde !

    Je suis un véritable Zér0 au tout début de son apprentissage du PHP, et je m'embrouille un peu les pinceaux, notamment sur tous les 'tests' qu'on peut faire en début de script pour vérifier l'état d'une variable récupérée par Get ou Post.

    Donc si je comprends bien...

    if(isset($variable))
    Permet de vérifier que la variable est bien initialisée, mais initilisée ne veut pas dire qu'elle contient quoi que ce soit. Elle peut-être initialisée et valoir NULL, c'est bien ça ? Mais dans ce cas je ne vois pas bien l'utilité de "isset", car quand on récupère une variable en général elle a une valeur, non ? Ne vaut-il pas mieux vérifier qu'elle a une valeur plutôt que de vérifier simplement qu'elle est initialisée ?

    Et sinon, tous les codes suivants reviennent-ils bien exactement au même ?

    if(!empty($variable))
    if($variable != NULL)
    if($variable != "")


    Merci de me corriger si je dis des bêtises et de m'éclairer sur les situations où on utiliserait plutôt "isset" ou plutôt une des trois expressions ci-dessus (si elles sont bien équivalentes).
    • Partager sur Facebook
    • Partager sur Twitter
      4 décembre 2005 à 3:24:07

      if(isset($variable) vérifie bien que la variable existe.

      Ca sert par exemple pour les formulaires :
      <?php
      if(isset($_POST['ajout_article'])) { ... }
      ?>


      <?php
      if(!empty($variable))
      if($variable != NULL)
      if($variable != "")
      ?>

      Ca doit revenir au même oui.
      • Partager sur Facebook
      • Partager sur Twitter
        4 décembre 2005 à 4:01:51

        Je viens de faire quelques petits tests et de jeter un coup d'oeil à la doc de php.net (à laquelle je comprends rarement grand chose), et ça me permet de me corriger moi-même sur un point :

        if(!empty($variable))

        ... n'est pas rigoureusement équivalent à...
        if($variable != NULL)
        if($variable != "")

        Car si la variable vaut 0 (zéro), empty vaut TRUE, alors que la variable ne vaut pas NULL. Si j'ai bien compris c'est la seule différence.

        Par contre, dans l'explication de la fonction isset (toujours dans la doc de php.net), on peut lire "isset() renverra FALSE lors du test d'une variable de valeur NULL".

        Ben ça c'est curieux parce que d'après le test que j'ai fait (à savoir valider une case de formulaire sans rien avoir mis dedans), la variable récupérée est bel et bien considérée comme initialisée d'après la fonction isset.

        $variable = $_POST['objet1'] ;
        // Je ne mets rien dans la case du formulaire de la page précédente...

        if (isset($variable))
                {
                echo "La variable est initialisée ; IS SET = OK <br /> <br />";
        // ... et c'est cette option-ci qui s'affiche
                }
                else
                {
                echo "La variable n'est pas initialisée. <br /> <br />" ;
                }


        C'est la doc qui se plante ou bien c'est mon raisonnement qui ne tient pas la route ?
        • Partager sur Facebook
        • Partager sur Twitter
          4 décembre 2005 à 4:03:43

          on parle d'un formulaire ici, alors obligatoirement elle sera initialisé, mais pas nécéssairement remplis. Ton raisonnement tenait la route, mais la doc a raison aussi.
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            4 décembre 2005 à 4:05:16

            Je pense que c'est normal.
            La variable est initialisée même si elle n'a aucune valeure.

            Edit: oui tu avait tout à fait raison à la base dans ton premier poste

            Citation : Kolimang

            Permet de vérifier que la variable est bien initialisée, mais initilisée ne veut pas dire qu'elle contient quoi que ce soit. Elle peut-être initialisée et valoir NULL, c'est bien ça ?



            Pour les formulaires, toutes les valeurs sont initialisées.
            Essaye avec $_GET tu verras
            • Partager sur Facebook
            • Partager sur Twitter
              4 décembre 2005 à 4:30:59

              Par $_GET, ça me donne la même chose.

              Si je tape comme URL

              www.monsite.com/ma_page.php?variable=

              et que je valide en appuyant sur entrée, la fonction isset($variable) vaut TRUE, alors que la variable vaut NULL.

              Enfin soit, merci à vous trois pour vos réponses, j'y vois déjà plus clair :)
              • Partager sur Facebook
              • Partager sur Twitter
                4 décembre 2005 à 9:32:20

                Bon c'est simple :
                isset($var) vérifie que la variable existe, donc qu'elle a été initialisée (peu importe comment d'ailleurs)

                !empty($var) vérifie que la variable n'est pas vide et n'est pas nulle.
                Donc vérifie du même coup si elle est initialisée.

                Sur des entrées de formulaires, on devrait toujours (ou presque valeur à 0) utiliser empty()
                • Partager sur Facebook
                • Partager sur Twitter
                  4 décembre 2005 à 13:16:44

                  Citation : Bison

                  [...]
                  Sur des entrées de formulaires, on devrait toujours (ou presque valeur à 0) utiliser empty()


                  Parfait, ça va dans le sens de ce que je pensais. :)

                  Merci Bison
                  • Partager sur Facebook
                  • Partager sur Twitter

                  isset, !empty, NULL

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown