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 :

Formulaire, si au moins un champ de vide alors


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 81
    Par défaut Formulaire, si au moins un champ de vide alors
    Bonjour,

    Comment exprimer en php ceci :
    si au moins un champ de vide alors

    J'ai un formulaire classique et je voudrais éviter ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if( empty($from) or empty($prenom )or empty($nom )or empty($numrue ) or empty($voie )
    or empty($codepostale )or empty($ville )or empty($acte )or empty($copie )or empty($nombre ) etc...
    Soit un truc hyper long qui ne me semble pas optimisé.

    J'ai quelques champs qui ne doivent pas être remplie obligatoirement, j' ai rajouté dedans :
    Ainsi, si je détecte au moins un champ vide, ce sera forcement un champ obligatoire.

    Cordialement.
    Philippe Rivière.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    foreach($_POST as $champ => $contenu){
           if(empty($contenu){
                 //ton action
           }
    }
    Ceci dit, il peut être judicieux au niveau securité, de checker les champs un par un, même si en php natif c'est rebarbatif au niveau du code, je ne puis que trop t'encourager à utiliser un framework.


    EDIT (piaf): Pour differenciers les champs obligatoire des champs facultatifs, tu peux utiliser une convention de nommage, exempe
    <input type="text" name="OBnom" />
    il te suffira ensuite dans le foreach de rajouter un test sur la variable $champ.




    EDIT2: Comme l'a souligné sabotage, il est possible de contourner la verification que j'ai proposé:
    donc:
    -ou ça ne pose pas pour toi de problème qu'il soit techniquement possible de mettre des champs vides, et tu te satisfait de ça, ou mieux, tu fais ça en javascript

    -ou tu check chacun de tes champs un par un, en en profitant pour forcer les int.

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je ne vois pas ce qui pourrait être "optimisé", pour vérifier x variables, il faut prendre chaque variable et la vérifier.
    Même s'il existait une fonction interne, elle ne ferrait que reproduire ça.

    Concernant la taille du code, il faudra de toute façon lister tes champs d'une manière ou d'une autre, donc il n'y aura pas grand chose a gagner au final, mais tu peux toujours faire une fonction si tu trouves que cela est plus clair.

    Si tu ne listes pas les champs (comme la proposition au dessus), un utilisateur malin peut contourner ta vérification en retirant le champ.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 5
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Je ne vois pas ce qui pourrait être "optimisé", pour vérifier x variables, il faut prendre chaque variable et la vérifier.
    Même s'il existait une fonction interne, elle ne ferrait que reproduire ça.

    Concernant la taille du code, il faudra de toute façon lister tes champs d'une manière ou d'une autre, donc il n'y aura pas grand chose a gagner au final, mais tu peux toujours faire une fonction si tu trouves que cela est plus clair.

    Si tu ne listes pas les champs (comme la proposition au dessus), un utilisateur malin peut contourner ta vérification en retirant le champ.
    Tu as raison, il est possible de bypasser la verification de j'ai proposé, j'aurais du le preciser.

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 81
    Par défaut Re
    Merci à tous, je n'avais pas vu que vous m'aviez répondu.

    Je vais tester cela demain matin.

    Cordialement
    Philippe Rivière.

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 81
    Par défaut Re2
    Je viens de tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    foreach($_POST as $champ => $contenu){
           if(empty($contenu){     //ton action }}
    ça récupère bien les champs(j'ai vérifié avec un echo $contenu), mais ça me renvoie à la fois que c'est vide et à la fois que le mail est bien envoyé.

    Je pense que c'est du au fait que ça rassemble la totalité du contenu, et donc cela ne produit pas la condition "si au moins un des champs est vide" comme je voulais.

    Ensuite concernant l'optimisation, ce que je voulais dire c'est que dans un formulaire,
    si l'on a 20 champs dont 18 obligatoires, je pense qu'il est plus optimisé de lui dire " si tu trouves un champs vide, à part champ1 et champ2 alors".

    C'est ce que shadok1 semble m'indiquer via avec la possibilité d'utiliser les "name".

    Mais quelle est la syntaxe ?
    Un truc dans ce genre : ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach($_POST as $champ(without name=toto and name=titi) => $contenu)

Discussions similaires

  1. Réponses: 8
    Dernier message: 10/06/2014, 10h51
  2. [MySQL] Requete select pour au moins un champs non vide
    Par Denis Placé dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/05/2012, 20h39
  3. Réponses: 1
    Dernier message: 30/01/2012, 22h34
  4. vérifier qu'un champ est vide dans un formulaire
    Par dr_feelgood dans le forum IHM
    Réponses: 3
    Dernier message: 08/06/2007, 07h21
  5. Ne pas envoyer le formulaire si champs est vide.
    Par serv dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 27/12/2006, 14h39

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