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] Comment savoir quel champ n'est pas rempli ?


Sujet :

Langage PHP

  1. #1
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Par défaut [PHP-JS] Comment savoir quel champ n'est pas rempli ?
    Bonjour,

    actuellement j'ai cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (empty($NomProjet) || empty($Jour) || empty($Jour) || empty($Mois) || empty($Annee) || empty($Responsables[]) || empty($Participants[])) {
     echo "<p class='red'>Vous n'avez pas complété toutes les zones&nbsp;:</p>";
     	}
    Ceci est après un formulaire, ou j'y est instauré des champs obligatoires, d'ou cette condition pour savoir si un des champs obligatoires n'est pas rempli (d'ailleurs pour Responsables et Participants ce sont des zones de listes ça marche quand meme le empty (participants[]) ? )

    Ma question est : est-ce qu'il est possible, si jamais un des chmaps n'est pas rempli de savoir lequel c'est ? de cette façon je pourrait écrire "Vous n'avez pas rempli tel ou tel champ"

    J'espère avoir été assez clair dans l'énoncé de mon problème

    Merci par avance pour votre aide
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 379
    Par défaut
    Bonjour,
    a ma connaissance, ce n'est pas possible .

    Pour avoir ce que tu souhaites, tu peux faire :
    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
     
    $valid = true;
    $m_erreur = '';
    if ( $empty($NomProjet) )
    {
    $m_erreur = 'Le nom du projet n\'est pas renseigné.<br />';
    $valid = false;
    }
    if ( ...) 
    {
    ...
    }
     
    // une fois que tu as vérifié tous tes champs :
    if ($valid)
    {
    // traitement
    }
    Voilà, en espérant t'avoir aidé

    Bonne journée.

  3. #3
    Membre confirmé Avatar de M1000
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2003
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 201
    Par défaut
    A ma connaissance non plus,
    si tu souhaite le faire en PHP je te conseille plutôt d'utiliser un switch c moins lourd et plus propre que les if en cascade.

    Par contre, ta méthode n'est pas la plus adapté il est préférable a mon sens de faire ce test côté client au préalable avec du javascript ce qui évitera les allé/retour côté serveur. Ensuite tu conserve ton test php juste avant de rentrée tes données au cas ou le javascript soit désactivé coté client...

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Je confirme ce qui a été dit et je vous propose une autre façon de procéder en se basant sur un tableau :
    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
     
    $erreurs = array();
    if (empty($_POST['champ1'])) {
        $erreurs[] = 'Le champ <b>champ1</b> est vide';
    }
    # ...
    if (!preg_match('/^.+@.+\..+$/i', $_POST['email'])) {
        $erreurs[] = "Le champ <b>email</b> n'est pas valide";
    }
    # ...
     
    if (count($erreurs) > 0) {
       echo 'Les erreurs suivantes ont été rencontrées :';
       echo '<ul>';
       foreach ($erreurs as $e) {
           echo '<li>' . $e . '</li>';
       }
       echo '</ul>';
    } else {
       # Le forumulaire est OK !
    }
    Le tableau est très facile à gérer dans le cas d'une utilisation d'un système de templates. A vous de voir après ce qui est le plus pratique.

  5. #5
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Par défaut
    Sachant que je débute vraiment en php, pour le moment je vais prendre la solution de Spirit car le javascrpit je connait pas beaucoup trop, et ce que t'as mis julp, je suis désol é mais je comprend pas trop ce qu'elle fait
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  6. #6
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Par défaut
    En fait je pense que le truc de julp est pas si mal (oui j'ai regardé un peu ma doc que j'ai sur php ) meme si je comprend pas trop le truc que tu fais sur le mail bref

    Par contre juste une chose : ça correspond a quoi ça :

    Ah oui un truc en plus : quand j'actualise ma feuille, ou meme quand je l'ouvre, en bas il était déja écrit comme quoi tous le schamps ne sont pas remplis. Comment ça se fait ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  7. #7
    Membre éprouvé
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Par défaut
    Probablement parce que tu fais ton tests tout de suite, sans vérifier si le formulaire a été posté. Généralement, j'ai une petite variable en hidden (<input type="hidden"...>), et avant de vérifier le contenu (ou de faire le moindre traitement), je vérifie l'existence de cette variable.
    Si elle existe, c'est que le formulaire a été "posté" et donc, je peux m'attendre a avoir des choses cohérentes (mais à vérifier, l'utilisateur est souvent un vil fourbe ^^), mais ce n'est assurément pas la seule (ni nécessairement la meilleure) méthode à utiliser.

    Ce que julp fait sur l'adresse email est très probablement vérifier que la syntaxe du mail est correcte, a savoir, matche avec *@*.*

    Ca (le #), c'est une maniere d'écrire un commentaire. Dans l'exemple, c'est équivalent a

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    /**
     * ici tu mets le code que tu veux, pratique pour donner des conseils ou 
     * se rappeler de ce que tu fais dans cette partie du fichier.
     */
    Tu peux aussi commenter avec "//".

  8. #8
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Par défaut
    Citation Envoyé par Rakken
    Probablement parce que tu fais ton tests tout de suite, sans vérifier si le formulaire a été posté. Généralement, j'ai une petite variable en hidden (<input type="hidden"...>), et avant de vérifier le contenu (ou de faire le moindre traitement), je vérifie l'existence de cette variable.
    Si elle existe, c'est que le formulaire a été "posté" et donc, je peux m'attendre a avoir des choses cohérentes (mais à vérifier, l'utilisateur est souvent un vil fourbe ^^), mais ce n'est assurément pas la seule (ni nécessairement la meilleure) méthode à utiliser.

    Très intéressant ta méthode, mais je vois aps trop comment l'utiliser dans mon formulaire, enfin je vois pas trop comment il marche.
    Donc si j'ai bien compris, il faut qu'à un endroit du formulaire je mette un champ:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="test">
    Mais je ne vois pas comment l'utilise prour voir si mon formulaire a été posté ou quoi tu fais ça comment ? tu pourrait m'indiquer quelques pistes ?

    Merci beaucoup pour ton aide

    Et merci poru els réponses aux autres questions pour le # je m'end outais mais bon j'ai préféré demander on sait jamais
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  9. #9
    Membre éprouvé
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Par défaut
    Vouaip, tu mets dans ca ton champs.

    Ensuite, dans le fichier php d'arrivée, tu n'a plus qu'a faire un
    if (isset($_POST['test'])) {
    // Ici tu mets ton traitement (tests des valeurs, action sur la base, redirection, etc...)
    }

    Et si tu arrives sur ta page pour la premiere fois, alors $_POST['test'] n'existera pas, donc tu ne rentrera pas dans ton if.
    Il est également possible de tester l'existence d'un champ de ton formulaire plutot que de creer un champ hidden exprès pour. Techniquement, ca marche tout autant, mais je n'aime pas spécialement l'idée d'affecter plusieurs "fonction" à un champ. Un champ texte sert a entrer une donnée et c'est tout. Si on veut tester le post d'un formulaire, il me semble plus "propre" de creer un champ exprès pour.
    Mais après, c'est toi qui voit ;-))

Discussions similaires

  1. [3D] Comment savoir si un point est dans mon champ de vision
    Par patmaba dans le forum Développement 2D, 3D et Jeux
    Réponses: 10
    Dernier message: 04/11/2018, 13h20
  2. [WD12] Comment Savoir que INumpage n'est pas encore initialisée ?
    Par le_dilem dans le forum WinDev
    Réponses: 4
    Dernier message: 28/04/2010, 10h36
  3. [FORMULAIRE] Comment savoir quel bouton radio est checked pour test ?
    Par Sekigawa dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/02/2009, 11h16
  4. Réponses: 3
    Dernier message: 22/02/2006, 11h23
  5. comment savoir quel menu est en surbrillance?
    Par LRobi dans le forum MFC
    Réponses: 2
    Dernier message: 27/01/2005, 09h04

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