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 :

rendre un champ obligatoire


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 13
    Points : 4
    Points
    4
    Par défaut rendre un champ obligatoire
    Bonjour à toutes et à tous

    Voilà le code me permettant d'afficher une zone de texte et j'aimerai savoir comment faire pour rendre ce champ obligatoire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach($extrafields->attribute_label as $key=>$label)
            {
                $value=(isset($_POST["options_".$key])?$_POST["options_".$key]:'');
                print "<tr><td>".$label.'</td><td colspan="3">';
                print $extrafields->showInputField($key,$value);//affiche zone de texte
                print '</td></tr>'."\n";
            }
    Merci d'avance

  2. #2
    Membre actif Avatar de stephanegib2
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 152
    Points : 233
    Points
    233
    Par défaut
    tu utilise un framework particulier ?

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Non je suis sous dolibarr et je peux créer des zones de texte manuellement

  4. #4
    Membre actif Avatar de stephanegib2
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 152
    Points : 233
    Points
    233
    Par défaut
    Pour le rendre obligatoire, il faut que tu contrôle que le champs soit renseigné manuellement par javascript et PHP. Après je sais pas si ton outil permet de le faire déjà plus facilement.

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Non il ne permet pas de la faire simplement. Je ne sais pas quoi rajouter dans le bout de code du dessus....

  6. #6
    Membre actif Avatar de stephanegib2
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 152
    Points : 233
    Points
    233
    Par défaut
    En PHP tu fait après la soumission du formulaire, en javascript tu à la soumission du formulaire.

    Dans ton cas je ne sais pas trop comment tu peut mettre sa en place.

  7. #7
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Je comprends rien du tout, là je ne vois vraiment pas comment faire...

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 159
    Points : 91
    Points
    91
    Par défaut
    Bon en gros, en PHP (on verra les vérifs javascript plus tard), tu envoie les informations du formulaire à un script php.

    En gros, coté HTML, tu va avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <form name="mon_formulaire" action="script_de_traitement.php" method="post">
    <input type="text" name="mon_input" value="ma_value" />
    <input type="submit" name="grobouton" value="envoyer" />
    </form>
    Donc, une fois que tu auras cliqué sur envoyer dans ton formulaire, la valeur de ton input sera envoyé à "script_de_traitement.php".

    Dans script de traitement, tu pourra vérifier la valeur de ton input en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    if(isset($_POST["mon_input"]) && $_POST["mon_input"] !="")
    {
      // ici le traitement normal si le champ n'est pas vide
    }
    else
    {
      // ici le traitement des cas d'erreurs
    }
    A toi d'identifier quel est le nom de ton script de traitement et de l'input que tu veux rendre obligatoire

  9. #9
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    ça c'est mon code, c'est le seul bout de code qui permet de m'afficher le champ et qui le gère

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach($extrafields->attribute_label as $key=>$label)
            {
                $value=(isset($_POST["options_".$key])?$_POST["options_".$key]:'');
                print "<tr><td>".$label.'</td><td colspan="3">';
                print $extrafields->showInputField($key,$value);//affiche zone de texte
                print '</td></tr>'."\n";
            }
    donc si j'essaye de l'adapter ça ferait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if(isset($_POST["options_".$key]]) && $_POST["options_".$key]] !="")
    {
       $value=(isset($_POST["options_".$key])?$_POST["options_".$key]:'');
                print "<tr><td>".$label.'</td><td colspan="3">';
                print $extrafields->showInputField($key,$value);
    }
    else
    {
      là je ne sais pas quoi mettre
    }

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 159
    Points : 91
    Points
    91
    Par défaut
    Bon déjà, tu va avoir un problème avec ton code puisque $key à l'endroit où tu l'utilise n'est pas défini.
    Après, c'est bien le problème, si tu ne connais même pas le nom du champ que tu veux rendre obligatoire, je ne peux pas t'aider.
    Si c'est tous les champs, tu peux inclure ta vérification dans la boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    foreach($extrafields->attribute_label as $key=>$label)
    {
       if(isset($_POST["options_".$key]]) && $_POST["options_".$key]] !="")
       {
          // traitement champ rempli
       }
       else
       {
          // traitement champ non rempli
       }
    }
    Après tu dit que tu ne sais pas quoi mettre, c'est forcément à toi de savoir !
    Déjà, que fait tu des données saisies dans les champs ?
    Si tu les stocke en base de données ou tu t'en sert pour faire un calcul, tu peux simplement ne rien faire, ou afficher un message d'erreur sur ta page.

    Mais on n'a pas encore inventé le langage qui lit dans les pensées

  11. #11
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    je suis sous dolibarr, j'ai créé un champ texte manuellement et le code est généré automatiquement, du coup je ne sais pas le nom de mon champ.
    Je voudrais que ça m'affiche un message d'erreur oui.
    Je suis vraiment débutante en php et malgrès les tuto je galère

  12. #12
    Membre actif Avatar de stephanegib2
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 152
    Points : 233
    Points
    233
    Par défaut
    Il faut voir si ton outil te donne la possibilité de faire sa. Bien que se serait dommage qu'il permette pas un truc aussi basique. Sinon il faudra le modifier ou surcharger la classe pour qu'il te le permette de faire se que tu veux.

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 159
    Points : 91
    Points
    91
    Par défaut
    Bon d'après ton code, ton champ s'appelle options_xxx.

    Pour connaître son nom, tu peux utiliser un plugin d'inspecter du DOM (code HTML en gros) pour ton navigateur. Le plus connu est firebug.
    Avec ce genre de plugin, tu peux "inspecter" un élément, c'est à dire le sélectionner et obtenir le code HTML correspondant.
    Dans ce code HTML, tu regarde l'attribut name.
    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="options_11" />
    Pur afficher un message, vu comment sont créés tes champs, je te conseillerais de faire ça comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    foreach($extrafields->attribute_label as $key=>$label)
            {
                $value=(isset($_POST["options_".$key])?$_POST["options_".$key]:'');
                print "<tr><td>".$label.'</td><td colspan="3">';
                print $extrafields->showInputField($key,$value);//affiche zone de texte
                print '</td>';
                if(/* c'est le champ obligatoire et il est pas rempli*/) print '<td>Ton message d\'erreur</td>';
                print '</tr>'."\n";
            }

  14. #14
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Merci pour firebug il s'appelle "options_pop" Mais ça ne m'affiche rien ....


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     foreach($extrafields->attribute_label as $key=>$label)
            {
                $value=(isset($_POST["options_".$key])?$_POST["options_".$key]:'');
    			print "<tr><td>".$label.'</td><td colspan="3">';//affiche popu colspan= espacement entre colonnes
                print $extrafields->showInputField($key,$value);//affiche zone de texte
                print '</td>';
    			if(isset($_POST["options_pop"]) && $_POST["options_pop"] ="")
    			{
    			print '<td>erreur</td>';
    			}
    			print '</tr>'."\n";
    		}

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 159
    Points : 91
    Points
    91
    Par défaut
    Euh, plusieurs erreurs, mais bon, c'est vrzai que je ne rentre pas dans le détail non plus.

    Un peu d'explications :

    déjà la boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach($extrafields->attribute_label as $key=>$label)
    parcoure tous les champs que tu as. Donc, de ce que tu as voulu faire, pour chaque champ de ton formulaire : si le champ "options_pop" existe et est vide, tu affiche une erreur.
    Ce qui aura pour conséquence, si ton champ obligatoire est vide, d'afficher un message d'erreur en face de tous tes champs. Je doute que c'est ça que tu veux.
    Toi tu veux un message en face de ton champs.

    Donc, dans un premier temps, il faut que tu l'identifie dans ton parcours de boucle :
    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
     
    foreach($extrafields->attribute_label as $key=>$label)
    {
    	$value=(isset($_POST["options_".$key])?$_POST["options_".$key]:'');
    	print "<tr><td>".$label.'</td><td colspan="3">';//affiche popu colspan= espacement entre colonnes
    	print $extrafields->showInputField($key,$value);//affiche zone de texte
    	print '</td>';
    	// identification de ton champ (en création)
    	if($key=="pop")
    	{
    		// ensuite, tu vérifie si une valeur t'a été retournée pour ton champ
    		// Note : j'ai remplacé $_POST par $_REQUEST parce que $_REQUEST contient $_POST, $_GET et $_COOKIE
    		if(!isset($_REQUEST["options_pop"]) || $_REQUEST["options_pop"]=="")
    		{
    			print '<td>erreur</td>';
    		}
    	}
    	print '</tr>'."\n";
    }
    Voila, sinon les autres erreurs :
    sur ta condition if :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_POST["options_pop"]) && $_POST["options_pop"] ="")
    Elle veut dire : est ce que l'utilisateur a bien envoyé une donnée pour "options_pop" et je met la valeur "" (chaine vide) dans $_POST["options_pop"].

    Première erreur évidente : il faut mettre deux signe égal (==) pour faire une comparaison. Sinon, un seul, c'est une affectation.
    Deuxième semi-erreur. Tu vérifie que "options_pop" existe. Mais il peux ne pas exister et il faudrait mettre une erreur aussi.
    Donc moi, j'ai choisis la condition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!isset($_REQUEST["options_pop"]) || $_REQUEST["options_pop"]=="")
    Qui peut être traduite en :
    Est ce que $_REQUEST["options_pop"] n'existe pas, dans le cas contraire on regarde si $_REQUEST["options_pop"] est vide.
    En effet, dans les conditions OU si la première partie de la condition est vraie, on évalue pas la suite.


    Bon, j'espère que t'es pas trop embrouillée. Important, ne pas confondre le champ HTML que tu génère via le script et la valeur que tu récupère via $_REQUEST["options_pop"]

  16. #16
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    merci je comprends mieux, toutefois cela ne fait rien même si je ne remplie pas le champ
    Peut être que print ' ne fait rien

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 159
    Points : 91
    Points
    91
    Par défaut
    Bah pour vérifier ça, tu n'as qu'a sortir le print de <td>erreur</td> des conditions, pour voir si c'est un problème d'affichage.

    Si ça s'affiche bien sans les conditions, c'est qu'il y à un problème dans les conditions.

    Une seule solution face à un problème, le test.

    Tu peux afficher les $key, pour voir si c'est effectivement "pop", tu peux afficher le contenu du tableau $_REQUEST en mettant la commande :
    à un endroit dans ton code et vérifier que "options_pop" existe ou pas, vide ou pas.

Discussions similaires

  1. Module facturation : rendre un champ obligatoire
    Par jmbinformatique dans le forum Odoo (ex-OpenERP)
    Réponses: 2
    Dernier message: 09/12/2013, 20h02
  2. [AC-2000] Rendre un champ obligatoire
    Par falco- dans le forum IHM
    Réponses: 2
    Dernier message: 06/10/2009, 15h55
  3. [jibx] Rendre un champs obligatoire déclenche une excpetion
    Par adilou1981 dans le forum Entrée/Sortie
    Réponses: 0
    Dernier message: 22/12/2008, 10h34
  4. Rendre des champs obligatoires
    Par imelda dans le forum Langage
    Réponses: 8
    Dernier message: 29/09/2008, 18h37
  5. Rendre un champs obligatoire
    Par aymane1978 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/02/2008, 20h20

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