PHP , quelle différence entre IF et ISSET .
Répondre à la discussion
Affichage des résultats 1 à 21 sur 21

PHP , quelle différence entre IF et ISSET .



  1. #1
    marc.suisse

    PHP , quelle différence entre IF et ISSET .


    ------

    Bonjour à tous

    Je suis en train de créer un site internet sur lequel les visiteurs peuvent remplir un formulaire dans le but de laisser un message et d'être recontacter .

    Seulement voilà , pour contrôler si les variables envoyées par $_POST étaient remplies , j'ai opté pour ce code :

    Code PHP:
    if (($_POST['sexe'] && $_POST['nom'] && $_POST['prenom'] && $_POST['adresse'] && 
       
    $_POST['codepostal'] && $_POST['ville'] && $_POST['pays'] && $_POST['telephone'] && $_POST['adresse_mail'] && $_POST['commentaire'] !="")){ 
    Mais je vois aussi la possibilité de mettre un isset , quelles sont les différences entre ces méthodes ?

    Si je comprends bien , le IF contrôle si les variables existent et le ISSET contrôle si les variables ne sont pas vides .

    Pour finir , j'envisageais d'utiliser la méthode foreach et empty .

    Enfin la question est de savoir quelle est la meilleure méthode

    Merci d'avance .

    -----
    On a tous quelque chose à s'apporter .

  2. #2
    invite770d9cfe

    Re : PHP , quelle différence entre IF et ISSET .

    if (empty($variable)):
    echo 'La variable est vide';
    else:
    echo 'La variable n'est pas vide';
    endif;

    Tu peux utiliser isset à la place de "empty", c'est un alias.

    Je te conseille de filtrer mieux que tu ne le fais le contenu des variables qui doivent être obligatoirement remplies pour indiquer au visiteur qu'il a oublié de donner un contenu à un champ marqué d'une étoile :

    Par exemple :

    if (empty($nom)) exit("Vous devez indiquer votre nom dans le champ prévu à cet effet");

    if (empty($email)) exit("Vous devez indiquer votre adresse E-Mail dans le champ prévu à cet effet");

  3. #3
    marc.suisse

    Re : PHP , quelle différence entre IF et ISSET .

    Salut

    Je te remercie de ta réponse

    Code PHP:
    if (empty($nom)) exit("Vous devez indiquer votre nom dans le champ prévu à cet effet"); 
    Pour ceci , je dois utiliser un echo non ?

    Pour information , ma page formulaire a l'extension .html , donc elle n'est pas une page PHP , je précise , on ne sait jamais .

    Pour ceci :

    Code PHP:
    if (empty($variable)): 
    Comme je dois contrôler plusieurs variables , tout d'abord je pense qu'il faut que j'utilise l'inscription suivante

    Code PHP:
    if (empty ($_POST['sexe']) && ($_POST['nom'])) && etc.... 
    C'est bien juste ?
    On a tous quelque chose à s'apporter .

  4. #4
    invite765732342432
    Invité

    Re : PHP , quelle différence entre IF et ISSET .

    Citation Envoyé par marc.suisse Voir le message
    Si je comprends bien , le IF contrôle si les variables existent et le ISSET contrôle si les variables ne sont pas vides .
    Pas du tout.
    ISSET va tester si la variable a été crée plus tôt dans le code.

    IF a un fonctionnement beaucoup plus complexe/simple (ça dépend de quel coté on se place) dû au fait que le PHP est faiblement typé:
    IF teste un booléen (vrai ou faux) uniquement.
    Est considéré comme faux (entre autres):
    - une variable qui n'existe pas
    - une variable à blanc (1 ou plusieurs)
    - une variable qui vaut 0

    Attention: l'expression 0 == " " est vraie

  5. A voir en vidéo sur Futura
  6. #5
    invite770d9cfe

    Re : PHP , quelle différence entre IF et ISSET .

    La syntaxe d' exit ou de son alias die est simple :
    tu affiches le message entre guillemets (si tu as décidé d'en mettre un) et le programme s'arrête là.

    Si tu utilises :

    exit;

    l'utilisateur va quitter le prog sans savoir pourquoi. On n'utilise exit; que pour debogger un programme.

    En ce qui concerne l'extension PHP ou HTML, tu peux utiliser l'une ou l'autre pour le formulaire. En revanche, le formulaire ne peut appeler (action=) qu'un fichier php.

    Si vraiment tu n'as pas envie de jongler entre les deux extensions, tu fais ton site entièrement avec l'extension PHP (tu oublies les extensions HTM et HTML) et tu développes soit en localhost (serveur Apache) ou directement en ligne, ce qui se fait de plus en plus.

    Je ne suis pas certain d'avoir été clair, mais il y a suffisamment de pointures sur ce fil pour te mettre dans le bon rail.

  7. #6
    marc.suisse

    Re : PHP , quelle différence entre IF et ISSET .

    Re ,

    Citation Envoyé par Faith
    ISSET va tester si la variable a été crée plus tôt dans le code.
    Je suis désolé , je préfère être honnête , mais je ne suis pas sûr d'avoir compris .

    ISSET sert donc uniquement à savoir si la variable existe , on est bien d'accord ?

    Tandis que le IF permet de vérifier plus de paramètres de la variable , par exemple comme tu dis , si elle existe , si elle est vide , si elle vaut 0 .

    Citation Envoyé par TiClic
    En ce qui concerne l'extension PHP ou HTML, tu peux utiliser l'une ou l'autre pour le formulaire. En revanche, le formulaire ne peut appeler (action=) qu'un fichier php.

    Si vraiment tu n'as pas envie de jongler entre les deux extensions, tu fais ton site entièrement avec l'extension PHP (tu oublies les extensions HTM et HTML) et tu développes soit en localhost (serveur Apache) ou directement en ligne, ce qui se fait de plus en plus.
    Alors je voyais la chose comme ceci :

    Un site en HTML y compris le formulaire ( éventuellement un peu de Javascript ) , tandis que la seule page en PHP sera la page traitement.PHP appelée par le formulaire une fois cliqué le bouton submit .

    Citation Envoyé par TiClic
    tu développes soit en localhost (serveur Apache)
    Oui j'utilise Wampserver .
    On a tous quelque chose à s'apporter .

  8. #7
    invite765732342432
    Invité

    Re : PHP , quelle différence entre IF et ISSET .

    Citation Envoyé par marc.suisse Voir le message
    ISSET sert donc uniquement à savoir si la variable existe , on est bien d'accord ?
    Tandis que le IF permet de vérifier plus de paramètres de la variable , par exemple comme tu dis , si elle existe , si elle est vide , si elle vaut 0 .
    Oui... c'est le principe

  9. #8
    marc.suisse

    Re : PHP , quelle différence entre IF et ISSET .

    Salut

    J'avais peur d'avoir dis des conneries , je te remercie alors
    On a tous quelque chose à s'apporter .

  10. #9
    marc.suisse

    Re : PHP , quelle différence entre IF et ISSET .

    Bon j'ai trouvé un bout de code sur internet et comme il me semblait pas mal , j'ai voulu l'essayer , mais hélas il ne fonctionne pas ..

    Code PHP:
    if(isset($_POST['sexe']) && isset($_POST['nom']) && !empty($_POST['sexe']) && !empty($_POST['nom']))
        {
        echo 
    " bonjour monsieur"
        
    }
        else
        {
        echo 
    " bonjour madame"
        
    }
    ?> 
    J'avoue ne pas comprendre pourquoi il me met une erreur .

    Le but étant de contrôler si les variables existent et qu'elles ne sont pas vide .

    Hélas , PHP m'indique une erreur à la ligne 16 qui correspond au } juste avant le else .

    Je n'ai pas mis toutes les variables de mon formulaire ( 10 en tout ) , mais les 2 première histoire de déjà tester .
    On a tous quelque chose à s'apporter .

  11. #10
    invite765732342432
    Invité

    Re : PHP , quelle différence entre IF et ISSET .

    Citation Envoyé par marc.suisse Voir le message
    Hélas , PHP m'indique une erreur à la ligne 16 qui correspond au } juste avant le else .
    Et le point-virgule en fin de ligne ?

  12. #11
    marc.suisse

    Re : PHP , quelle différence entre IF et ISSET .

    Maintenant que tu le dis , c'est fort possible ...

    Je vais contrôler ça et te redit .
    On a tous quelque chose à s'apporter .

  13. #12
    marc.suisse

    Re : PHP , quelle différence entre IF et ISSET .

    Effectivement , c'est une erreur conne , mais je ne l'avais pas vu

    Bon maintenant j'en suis là :

    Code PHP:
    <body>
       <div id="corpstraitementphp">
       <?php
       
    if(isset($_POST['sexe']) && isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['adresse']) && isset($_POST['code_postal']) && isset($_POST['ville']) && isset($_POST['pays']) && isset($_POST['telephone']) && isset($_POST['adresse_mail']) && isset($_POST['commentaire']) && !empty($_POST['sexe']) && !empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['adresse']) && !empty($_POST['code_postal']) && !empty($_POST['ville']) && !empty($_POST['pays']) && !empty($_POST['telephone']) && !empty($_POST['adresse_mail']) && !empty($_POST['commentaire']))
        {
        echo 
    "<p>Bonjour Monsieur ".$_POST['nom']." , les données suivantes nous ont été transférées :</p>";
        foreach(
    $_POST as $key=>$val)
        echo 
    $key.'=>'.$val.'<p>';    
        }
        else
        {
        echo 
    "<p>Veuillez svp saisir tout les champs !</p>" ;
        } 
       
    ?>
       </div>
    Ca marche très bien , il me reste à mettre un HTMLSPECIALCHARS , et finaliser certains points .

    Par exemple de faire en sorte que le code source ne s'étale pas trop vers la droite , je pense mettre une balise n\ , mais je ne sais pas encore ou la mettre .
    On a tous quelque chose à s'apporter .

  14. #13
    invite770d9cfe

    Re : PHP , quelle différence entre IF et ISSET .

    Là, tu n'es pas bien du tout. Tu es en train de dire en gros :

    Si la zone de saisie 'nom' contient un truc et si la zone de saisie 'nom' n'est pas vide, ton visiteur va voir un truc du genre :

    Bonjour Monsieur Dugenou , les données suivantes nous ont été transférées :
    sexe=>Masculin

    nom=>Dugenou

    prenom=>Gilbert

    adresse=>3 rue des pendus

    code_postal=>57200

    ville=>Tarabelbeu

    pays=>France

    telephone=>0523235469

    adresse_mail=>ginou@flod.fr

    commentaire=>RAS

    Submit=>Envoyer

    A mon avis, va pas être content le monsieur.
    Je crois que tu peux faire mieux.

  15. #14
    invite770d9cfe

    Re : PHP , quelle différence entre IF et ISSET .

    Je tiens à préciser que ton code est étrange, mais qu'il fonctionne.
    Le résultat ci-dessus est réel. Avec ton formulaire, tu ne devrais pas voir autre chose. Tu confirmes ?

  16. #15
    invite770d9cfe

    Re : PHP , quelle différence entre IF et ISSET .

    Comme je ne pourrai pas reprendre ce soir et que je ne voudrais pas te faire perdre ton temps, je te propose ce type de "filtre-arrivée" où seuls les champs NOM, PRENOM et E-MAIL sont obligatoires. Si ces 3 conditions sont remplies, tu enfournes les données dans ta base MySQL et tu traites.


    <?php
    $sexe = $_POST['sexe'];
    $nom = $_POST['nom'];
    $prenom = $_POST['prenom'];
    $adresse = $_POST['adresse'];
    $code_postal = $_POST['code_postal'];
    $ville = $_POST['ville'];
    $pays = $_POST['pays'];
    $telephone = $_POST['telephone'];
    $adresse_mail = $_POST['adresse_mail'];
    $commentaire = $_POST['commentaire'];

    IF (trim($nom)=="") exit("le champ NOM doit être rempli");
    IF (trim($prenom)=="") exit("le champ PRENOM doit être rempli");
    IF (trim($adresse_mail)=="") exit("le champ E-MAIL doit être rempli");
    ?>
    Ce n'est pas très fin sur le plan "programmation", mais ça marche depuis que PHP existe.

  17. #16
    marc.suisse

    Re : PHP , quelle différence entre IF et ISSET .

    Salut

    Je te remercie du temps passé

    Très bien , je vais mettre ceci à la place de ce que j'ai déjà tapé.

    Par contre , je n'utiliserais pas de BDD , car tout ceci sera envoyé par mail .

    Toi tu penses qu'il ne faut pas confirmer les données qui vont être transférées ?
    On a tous quelque chose à s'apporter .

  18. #17
    marc.suisse

    Re : PHP , quelle différence entre IF et ISSET .

    Re,

    Je tiens à préciser que ton code est étrange, mais qu'il fonctionne.
    Le résultat ci-dessus est réel. Avec ton formulaire, tu ne devrais pas voir autre chose. Tu confirmes ?
    Je confirme à 99% , la seule chose que je n'ai pas , c'est Submit=>Envoyer
    On a tous quelque chose à s'apporter .

  19. #18
    marc.suisse

    Re : PHP , quelle différence entre IF et ISSET .

    C'est de nouveau moi , je rajouterais 2 liens intéressants :

    http://www.siteduzero.com/forum-83-3...-et-empty.html

    http://www.expreg.com/expreg_article...rt=isset_empty

    Donc en résumé :

    - L'utilisation seule de isset peut créer des erreurs .

    - L'utilisation de empty peut suffire .

    - L'utilisation de isset et empty peut éviter encore d'autres erreurs .
    On a tous quelque chose à s'apporter .

  20. #19
    invite765732342432
    Invité

    Re : PHP , quelle différence entre IF et ISSET .

    Citation Envoyé par marc.suisse Voir le message
    - L'utilisation seule de isset peut créer des erreurs .
    - L'utilisation de empty peut suffire .
    - L'utilisation de isset et empty peut éviter encore d'autres erreurs .
    Ces liens sont effectivements intéressants pour bien comprendre le fonctionnement. Cela dit, dans 95% des cas, faire un simple if($_POST["toto"]) est suffisant.
    Les isset et empty ne sont vraiment indispensables que quand le champs peut être renseigné à blanc ou à 0 et être quand même correct, et que 0/blanc n'est pas une valeur par défaut acceptable...

    Donc bon, c'est quand même très rare

    Ne pas oublier que le "plus" du PHP, c'est une grande liberté/simplicité dans le code alors si on peut simplifier (tout en restant correct et sans bug, bien sur), c'est aussi bien (enfin à mon avis)

    De la même manière, dans le code de TiClic, on voit:
    IF (trim($nom)=="")
    Oui... ce n'est pas faux... mais écrire if (trim($nom)) était tout aussi valable dans ce cas
    et même if ($nom) aurait pu suffire, car il risque de mal fonctionner seulement si $nom contient seulement un \n, ce qui est quand même peu probable et de toute façon, il aurait été préférable d'initialiser directement de cette façon: $nom = trim($_POST['nom']);
    Puisque de toute façon, il faudra virer les retours à la ligne excédentaires à un moment ou un autre...

  21. #20
    marc.suisse

    Re : PHP , quelle différence entre IF et ISSET .

    Salut

    Merci de ce complément d'information .

    Ces liens sont effectivements intéressants pour bien comprendre le fonctionnement. Cela dit, dans 95% des cas, faire un simple if($_POST["toto"]) est suffisant.
    Oui , mais dans mon cas , le fait de ne pas remplir les boutons radio , engendrait une erreur lors de l'appel de la page traitement.PHP.

    Je vais me plonger sur la signification de l'instruction trim .
    On a tous quelque chose à s'apporter .

  22. #21
    invite765732342432
    Invité

    Re : PHP , quelle différence entre IF et ISSET .

    Citation Envoyé par marc.suisse Voir le message
    Oui , mais dans mon cas , le fait de ne pas remplir les boutons radio , engendrait une erreur lors de l'appel de la page traitement.PHP.
    S'ils ne sont pas remplis, ils ont une valeur à blanc, donc le "if" fonctionne

    Je vais me plonger sur la signification de l'instruction trim .
    Ca permet de faire un petit nettoyage d'une chaine de caractères en virant les "caractères blancs" (espaces, retours à la ligne, ...) en début et fin de chaine.
    http://www.manuelphp.com/php/function.trim.php

Discussions similaires

  1. Quelle difference entre l'acceleration et la force ?
    Par invite1a925bda dans le forum Physique
    Réponses: 22
    Dernier message: 27/12/2007, 18h01
  2. Quelle est la différence entre...
    Par invite43bf67f7 dans le forum Électronique
    Réponses: 2
    Dernier message: 12/10/2006, 17h32
  3. quelle difference entre MAX487 et MAX485
    Par invitec35bc9ea dans le forum Électronique
    Réponses: 3
    Dernier message: 25/06/2006, 20h29
  4. quelle différence entre ces DVD ?
    Par invitef0b77be6 dans le forum Matériel - Hardware
    Réponses: 6
    Dernier message: 20/06/2005, 19h23
  5. quelle différence CD entre 1 X 40 et 2 X 48
    Par invite8832ae39 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 04/01/2005, 23h55
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...