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

Vue hybride

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    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 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    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 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    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 !

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