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 :

[PHP-JS] Savoir la différence entre 2 "isset"


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut [PHP-JS] Savoir la différence entre 2 "isset"
    Bonjour à tous,

    En relisant tous mes fichiers de l'administration d'un moteur de recherche, j'ai vu ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((isset($_POST['base'])) && ($_POST['base'] != ""))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((isset($_POST['base']) && !empty($_POST['base']))
    Ce sont des codes récupérés ou qu'on m'a donnés, je sais plus !

    Ces 2 formes de codes testant la valeur d'un champ, quelle serait la meilleure des deux ?

    Merci de votre réponse.

  2. #2
    Membre chevronné Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Par défaut
    cela va dépendre de ce que peut contenir ta variable, mais dans les cas les plus général, je conseille la deuxième méthodes.

    empty ne renverra pas false si et seulement si la variable est vide !

    ""
    "0"
    0
    false
    null

    toute ces cas feront qu'empty renverra false!

    empty n'étant pas une fonction mais une structure du langage, ton code sera plus performant avec empty, mais c'est négligeable!

    Pourquoi cela va dépendre du contenu? c'est justement parce que pour certains cas, "0", 0, ou false sont des valeurs que tu as peut être besoin de savoir

  3. #3
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Bonjour,
    Tu peux toujours faire un petit test avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php if($_POST['test'] != "") {echo "test ok" ;} ?>
    <?php if(!empty($_POST['test'])) {echo "test_empty ok" ;} ?>
    <form name="form1" method="post" action="test.php">
      <input type="text" name="test" id="test">
      <input type="submit" name="button" id="button" value="Envoyer">
    </form>
    Essaye de mettre un "0" (zéro) dans le champs et regarde le résultat ...
    Personnellement j'utilise la première solution !="" ...
    Maintenant comme le dit SphynXz si tu es sûr que ta valeur ne soit jamais égale à zéro ... tu peux utiliser la deuxième solution.

  4. #4
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut
    Citation Envoyé par jumano Voir le message
    Bonjour,
    Tu peux toujours faire un petit test avec le code suivant :
    Bonjour Jumano,

    Quand j'ai voulu faire ton test, qui est très bien expliqué d'ailleurs, j'ai eu un Parse Error
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Notice: Undefined index: test in G:\SiteQI98\exemples_forum\moteur_recherche_admin\ajout\test.php on line 7
    Là, je ne percute pas ! J'ai du mal à comprendre cette histoire d'index.


    Citation Envoyé par jumano Voir le message
    Essaye de mettre un "0" (zéro) dans le champs et regarde le résultat ...
    Personnellement j'utilise la première solution !="" ...
    Maintenant comme le dit SphynXz si tu es sûr que ta valeur ne soit jamais égale à zéro ... tu peux utiliser la deuxième solution.
    Il est vrai que ce que vous m'avez dit et très explicatif, mais un petit renseignement si tu veux bien :
    Si le champ est alphanumérique ou numérique, la syntaxe est la même n'est-ce pas ?

    Je croyais avoir compris les explications de SphynXz, mais je me suis posé la question après !

  5. #5
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Pour le message d'erreur essaye de rajouter un isset() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php if (isset($_POST['test'])) { 
          if($_POST['test'] != "") {echo "test ok" ;} 
          if(!empty($_POST['test'])) {echo "test_empty ok" ;}
    	  }
    ?>
    Si le champ est alphanumérique ou numérique, la syntaxe est la même n'est-ce pas ?
    La syntaxe sera la même, maintenant si ta variable peut être égale à "0"(zéro) avec §empty çà ne fonctionnera pas, puisqu'il la considèrera comme vide.
    Sinon regarde la doc ...

  6. #6
    Membre chevronné Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Par défaut
    Pour ce qui est de l'erreur "Undefined Index", c'est que tu as très simplement copier/coller le bout de code que t'a gracieusement donné jumano. Il esperait que tu l'adapterait à ton code à toi

    Si une variable est vide : empty renvoit false
    Si une variable contient des données numérique :
    -Si elle contient 0 : empty renvoit false
    -Sinon empty renvoit true
    Si une variable contient "0" : empty renvoit false
    Si une variable contient NULL : empty renvoit false
    Si ta variable est un tableau dans lequel aucune données n'est présente : empty renvoit false aussi
    Si une variable n'est que déclaré : empty renvoit false

    Pour empty : le 0 pour le numérique c'est l'équivalent du vide pour du texte

  7. #7
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Il esperait que tu l'adapterait à ton code à toi
    Non je penssais juste qu'on pouvait le mettre dans une page vierge pour faire le test ... et ainsi voir le résultat ...

  8. #8
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut
    Je sais pas si c'est bien ça parce dans les tests de la base de données je n'ai pas de "isset" et ça marche !

    Ouh ! Là je m'embrouille...

  9. #9
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut
    Merci de tes explications SphynXz,

    Comme j'ai pas mal de fichiers qui testent la valeur de certains champs, et qui font par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ((isset($_POST['url']) && ($_POST['url'] != "")) && 
       ((isset($_POST['titre']) && ($_POST['titre'] != "")) && 
       ((isset($_POST['motscles']) && ($_POST['motscles'] != ""))
    il faudrait que je change tout ça en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ((isset($_POST['url']) && !empty($_POST['url'])) && 
        (isset($_POST['titre']) && !empty($_POST['titre'])) && 
        (isset($_POST['motscles']) && !empty($_POST['motscles'])))
    En principe, il ne devrait pas y avoir de problèmes !

    La syntaxe ne change pas pour ce qui suit ?

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/04/2008, 11h12
  2. [Couleur] Différence entre Delphi, Php/Html
    Par Rayek dans le forum Langage
    Réponses: 5
    Dernier message: 19/10/2005, 13h06

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