ISSET: Explication simple ?

mzdiine

mzdiine Le 31 juillet 2016 à 14:36 (Édité le 25 janvier 2019 à 17:52)

Bonjour,

Bonjour, je voudrais savoir si vous pouvez m'expliquer une bonne fois pour toutes à quoi sert la fonction (ISSET) ? Et comment définissez vous la ligne de code où apparaît elle ? J'ai vraiment besoin de savoir car ça fait 2 jours que je cherche des tutos (vidéo de préférence) qui explique la fonction le plus simplement possible mais rien!

J'aimerais donc savoir si quelqu'un pouvais me faire un explication simple, rapide.

Ps: j'ai déjà vu la vidéo PHP de PrimFX mais quand je regard celle-ci et que j'en regard une autre les explications ne sont pas pareil donc mon cerveau a du mal à stocker la bonne définition de la fonction :lol:

Cordialement. M
lecteursdb

lecteursdb Le 31 juillet 2016 à 15:21

salut 'mzdiine'

isset()
te permet de tester l'existence d'une variable, et te renvoit donc un boolean vrai si elle existe, sinon faux (ce qui à l'affichage peut donner 1 ou 0 ) 

Tu dois utiliser la fonction
isset()
dans un if 
exemple: 
if (isset($_POST['prenom'])) 
$prenom = $_POST['prenom']; 
 Elle a de multiples usages, par exemple, l'utilisateur peut très bien arriver sur une page de traitement sans être passé par la page du formulaire avant. 
La bonne pratique, c'est de vérifier que ce qu'on récupère par get, post, session existe bien avec isset :)
mzdiine

mzdiine Le 31 juillet 2016 à 16:48

bonjour,

merci pour ta réponse, j'ai pratiquement compris en réalité je dois majoritairement utiliser la fonction ISSET afin de validé l'existence d'une variable.

J'aurais une petite question et je voudrais évité d'ouvrir un nouveau topic juste pour ça.

Je suis entrain de m'exercer sur le PHP et comme tout bon débutant, je test et re-test et rere-test afin de comprendre et là je voudrais faire comme dans le tutoriel de PRIM sur la transmission des informations par formulaire. Je voudrais faire que, si par exemple l'utilisateur n'a pas entrer de texte dans la TEXTBOX alors un message d'erreur s'affiche (comme dans la vidéo), OR moi j'ai un problème, même si je n'entre pas de texte dans la TEXTBOX, j'ai quand même l'ECHO de validation qui s'affiche "soit: Bonjour, tu t'appel".

Voici mon code, vous comprendriez mieux je pense:

<!doctype html>
<html lang="fr">
<head>
  <meta charset="utf-8">
  <title> Page d'exemple FORMULAIRE (TEXTBOX+SUBMIT > PHP)</title>
</head>
<body>
   <form method="POST" action="" textalign="center">
      Nom: <input type="text" name="valeur" placeholder="pseudo"></br>
      </br>
      <input type="submit" value="Valider!">
   </form>
   <?php
      if (isset($_POST['valeur'])) {
         echo "Bonjour, tu t'appel ".$_POST['valeur'];
      }
      elseif (isset($_POST['valeur']) AND empty($_POST['valeur'])) 
      {
         echo "Veuillez completer les formulaires!";
      }
   ?>
   
</body>
</html>
En faites mon ELSEIF ne s’exécute pas, quoi qu'il arrive c'est toujours ma condition "SI" qui s'affiche.
TheOldNoob

TheOldNoob Le 31 juillet 2016 à 18:54

Salut l'ami,
La fonction isset a été très bien expliquer par lecteursdb.

Si ton elseif ne fonctionne pas c'est normal, actuellement tu lui dit :
Si $_POST existe et que $_POST est vide...

isset = existe
empty = vide

tu aurai du faire :
elseif (isset($_POST['valeur']) AND !empty($_POST['valeur']))
le ! devant le empty n'est pas ou l'inverse.
Par exemple :

isset = existe
!isset = n'existe pas

empty = vide
!empty = n'est pas vide.

Donc isset + !empty est une bonne vérification de formulaire.


Ensute, il y a quelque autre erreur, je répond déja a ça et je te fait un explicatif plus pousser sur les autres erreurs de ton formulaire 😉
TheOldNoob

TheOldNoob Le 31 juillet 2016 à 19:29 (Édité le 31 juillet 2016 à 19:37)

Donc, quelque autre petite erreur pas bien mechantes 😀

Dans ton formulaire, tu lui indique la méthod="POST" en majuscule c'est la superglobale, en minuscule, c'est le post. Donc dans ton formulaire tu le met en minuscule, même si en majuscule ça va fonctionné. ça t'evitera aussi pour ne pas confondre.

Ensuite, Tu met :
"Nom:" en dure pour indiquer le nom que ton utilisateur doit utilisé.
Je t'invite a utilisé la balise label comme ceci :
<label for="valeur">Nom :</label>
Tu remarque qu'elle a un for"valeur" qui va indiquer que se label sera utilisé avec ton input qui son nom valeur.

Justement, le nom de ton input, la pour ton exercice, tu peu l'appelé comme tu veux, mais, c'est très important tu doit donné des noms en correlation avec l'objet que tu utilise. C'est important, parce si la tu n'a qu'un seul champs a vérifié, dans le cas ou tu en aura plusieurs, si tes champs son nommé aléatoirement, tu va jamais t'y retrouver. Du coup, classiquement on va utilisé un peu toujours les mêmes noms pour les champs et ses noms, on va aussi généralement les faire en anglais.

Alors pourquoi en anglais? Parce que c'est la convention, et que comme dans tout les langages, il faut que tout le monde utilise le même sinon ça deviens le bordel.
Je te donne des exemple de nom de champs 😀


Pseudo => nickname
Prénom => name
Nom de famille => lastname
mot de passe => password
Ville => city
Pays => country

etc... et si tu parle pas anglais, utilise google trad, après tu vera que les nom tu les retiens rapidements 😉

Ensuite, bien que se soit pas une erreur, je vais t'aider un peu pour comme je viens de l'indiquer, tu a plusieurs champs dans ton formulaire.
Donc, plusieurs vérification.
Comme a prioris tu sais faire un champs, je vais partir du principe que tu sais aussi en faire plusieurs 😉


Alors voilà comment tu procede simplement pour faire la vérification de plusieurs champs (pseudo, prénom, nom, email, password) :

if (!empty($_POST) && isset($_POST)) { // On commence donc par vérifié que ce n'est pas vide et que c'est remplie
    
    foreach ($_POST as $key => $value) { // Nettoyage des données
        $post[$key] = trim(strip_tags($value)); // récupération du _POST dans un tableau
    }
    // On démarre les vérification champs par champs
    if(strlen($post['nickname']) < 2 || strlen($post['nickame']) > 50){ // on défini les propriétés de 'nickname'
        $errors[] = '<div role="alert">Votre pseudo doit comporter entre 2 et 50 caractères</div>';
    }
    if(stren($post['firstname']) < 2 || strlen($post['firstname']) > 50){ // on défini les propriétés de 'firstname'
        $errors[] = '<div role="alert">Votre prénom doit comporter entre 2 et 50 caractères</div>';
    }
    if(strlen($post['lastname']) <2 || strlen($post['lastname']) >50 ){
        $errors[] = '<div role="alert">Votre nom doit comporter entre 2 et 50 caractères</div>';
    }
    if(empty($post['email']) || !filter_var($post['email'], FILTER_VALIDATE_EMAIL)) {
        $errors[] = '<div role="alert">Votre email n\'est pas valide</div>';
    }
    if(isset($post['pasword']) && empty($post['password']) && strlen($post['email']) < 6) {
        $errors[] = '<div role="alert">Votre mot de passe n\'est pas valide</div>';
    }
    if(count($errors) > 0){  // On compte les erreurs, si il y en as (supérieur a 0), on passera la variable $showErrors à true.
        $showErrors = true; // valeur booleen // permettra d'afficher nos erreurs s'il y en a

       $nickname = $post['nickname']
        $firstname = $post['firstname'];
        $lastname = $post['lastname'];
        $password = $post['password'];
        $email = $post['email'];
    }
    else {                
            echo "Bonjour, '.['nickname'].'ton nom est '.['lastname'].', ton prénom '.['name']' ton e-mail '.['email'].'Merci de t'être inscrit."
        }
   if($showErrors){
            echo implode('<br>', $errors);
        }


Voilà voilà

Alors, autre chose, a la base, je n'aime pas donnée des gros pavé de ligne de code toute faite parce que je part du principe que ça n'aide pas les gens qui comme toi souhaite apprendre.

Du coup, dans mes vérification, j'ai volontairement met des erreurs. Rien de vraiment méchant, mais qui vont t'entrainer a débug du code. Chose que tu sera ammené a faire très souvent.
P
Pour t'aider a reglé les bugs, tu y trouvera :
- Une ou Des lettres manquantes
- Une ou des acolades manquantes ou mal placé
- Un ou des problèmes de concaténation
- Une ou des erreurs que je t'es expliquer dans ma réponse au dessus.
- Une erreur suprise assez facile a trouvé

A toi donc de créer le formulaire qui va avec toute les vérifications et de testé ton code 😉
mzdiine

mzdiine Le 31 juillet 2016 à 22:27

 Je pense qu'après mes années passer sur différents forum tel que: Flash, Programmation, Photoshop, AE, Jeux vidéos etc.. c'est la réponse la plus complète que j'ai lu lol! En tous cas merci beaucoup pour ton message TheHoldNoob je vais tenter de vérifié les erreurs (quand j'aurais le temps bien sur) et te retourner le code sans erreur (si tu le veux bien) 😀 

Merci à tous pour vos messages 😀

Cordialement. M
TheOldNoob

TheOldNoob Le 31 juillet 2016 à 22:30

Je t'en pris,

C'est autant un exercice pour moi que pour toi. Je suis tout jeune devloppeur aussi et j'ai galérer comme toi aussi.

T'embête pas pour le retour de correction, si tout fonctionne sans erreur, c'est que tu y sera arrivé 😀
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte