Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3004 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [résolu][PHP/JS] Formulaire avec input name="nom[]"

 

 

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[résolu][PHP/JS] Formulaire avec input name="nom[]"

n°1095275
bigben74
Posté le 24-05-2005 à 16:57:09  profilanswer
 

Bonjour à tous,
 
Je fatigue sur ce problème de d'input avec des noms très proches!
 
Je récupère un nombre en $_POST pour créer autant de lignes dans un tableau avec des

Code :
  1. <input type=text name='nom[<? echo $numero ?>]' id='nom<? echo $numero ?>'>


 
Le fait d'avoir des nom[0], nom[1], nom[2]... est très pratique pour le traitement du submit suivant. Par contre je n'arrive pas à vérifier que ces champs ont été remplis (avant le submit tant qu'à faire). Voici la fonction appelée par le onsubmit=check_form(this, <? echo $nombre_de_ligne ?> ).

Code :
  1. function check_form(form, nb)
  2. {
  3. var retour = false;
  4.   if (form.valider.value == "terminer" )
  5.   {
  6. for (x=0; x<nb; x++) {
  7.  if (document.getElementById('nom'+x).value == "" )
  8.  // aussi essayé au début avec if (form.nom[x].value == "" )
  9.  {
  10.   alert("un champ est vide" );
  11.  }
  12.  // else retour = true;
  13. }
  14. return retour;
  15.   }
  16. }


 
Merci pour votre aide


Message édité par bigben74 le 25-05-2005 à 15:41:12
mood
Publicité
Posté le 24-05-2005 à 16:57:09  profilanswer
 

n°1095298
gatsusat
Posté le 24-05-2005 à 17:06:38  profilanswer
 

edit : j'enleve ma connerie


Message édité par gatsusat le 24-05-2005 à 17:33:00
n°1095309
bigben74
Posté le 24-05-2005 à 17:09:21  profilanswer
 

Petite précision: alert("un champ est vide" ) ne s'affiche jamais...  :pfff:  
 
En fait là c bourrin, évidement un seul message si un des champs est vide ça suffit, mais c'est justement pour tester (que ça marche pas).

n°1095336
gatsusat
Posté le 24-05-2005 à 17:34:26  profilanswer
 

ton erreur vient d'ici :  
 

Code :
  1. <input type=text name='nom[<? echo $numero ?>]' id='nom<? echo $numero ?>'>


 
c'est pas des simple quotes ', mais des doubles quotes " que l'on utilise pour les attribut
 

Code :
  1. <input type="text" name="nom[<? echo $numero ?>]" id="nom<? echo $numero ?>">


 
l'erreur était toute conne et je me suis fais avoir comme un bleu


Message édité par gatsusat le 24-05-2005 à 17:35:07
n°1095458
FlorentG
Posté le 24-05-2005 à 19:09:11  profilanswer
 

gatsusat a écrit :

ton erreur vient d'ici :  
 

Code :
  1. <input type=text name='nom[<? echo $numero ?>]' id='nom<? echo $numero ?>'>


 
c'est pas des simple quotes ', mais des doubles quotes " que l'on utilise pour les attribut
 

Code :
  1. <input type="text" name="nom[<? echo $numero ?>]" id="nom<? echo $numero ?>">


 
l'erreur était toute conne et je me suis fais avoir comme un bleu


Erreur :o

Citation :

By default, SGML requires that all attribute values be delimited using either double quotation marks (ASCII decimal 34) or single quotation marks (ASCII decimal 39).


;)

n°1095459
FlorentG
Posté le 24-05-2005 à 19:10:31  profilanswer
 

bigben74 a écrit :

Bonjour à tous,
 
Je fatigue sur ce problème de d'input avec des noms très proches!
[...]
[/cpp]
 
Merci pour votre aide


C'est quoi cette ligne :

if (form.valider.value == "terminer" )(


Vire-ça tout de suite, et utilise des fonctions DOM :D

n°1095466
gatsusat
Posté le 24-05-2005 à 19:21:29  profilanswer
 

erf oué j'ai oublié de lui poster l'autre partie du script corrigée elle aussi :=)

n°1095902
bigben74
Posté le 25-05-2005 à 09:08:30  profilanswer
 

if (form.valider.value == "terminer" )
c'est parce que je poste plusieurs fois mon formulaire et à la fin seulement le nom du bouton submit est "terminer". ça par contre c'est sûr que ça marche nikel ;-)
 
sorry de faire le noob, mais c'est qoi les fonctions DOM?

n°1095905
FlorentG
Posté le 25-05-2005 à 09:10:31  profilanswer
 

Des trucs genre getElementById. Parce que les document.monFormulaire.monChamp, c'est très bof et très vieux :D

n°1096028
bigben74
Posté le 25-05-2005 à 10:12:01  profilanswer
 

J'ai cherché je vois pas vraiment en quoi se différencient les fonctions DOM du JS de base, dans les exemples que j'ai trouvé on a toujours en début de fonction
MaVariable = document.form....;
 
Enfin tant pi j'ai fais un test en page statique:

Code :
  1. <html>
  2. <head>
  3. <script>
  4. function check_form(form, nb)
  5. {
  6. var retour = false;
  7. var nb_vides = 0;
  8.   if (form.valider.value == "terminer" )
  9.   {
  10.     for (x=0; x<nb; x++) { 
  11.         if (document.getElementById('nom'+x).value.length < 2)
  12.         {
  13.          nb_vides++; 
  14.         }
  15.     }
  16. if (nb_vides == 0)
  17.  retour = true;
  18. if (nb_vides == 1)
  19.  alert("1 champ est vide" );
  20. if (nb_vides > 1)
  21.  alert (nb_vides + " champs sont vides" );
  22.     return retour;
  23.   }
  24. }
  25. </script>
  26. </head>
  27. <body>
  28. <form method="get" onSubmit="return check_form(this,4)">
  29. <input type=text name="nom[0]" id="nom0"><br>
  30. <input type=text name="nom[1]" id="nom1"><br>
  31. <input type=text name="nom[2]" id="nom2"><br>
  32. <input type=text name="nom[3]" id="nom3"><br>
  33. <input type="submit" value="terminer" name="valider">
  34. </form>
  35. </body>
  36. </html>


 
Et bien ça, ça marche nikel... (avec " ou ', c'est la même chose)
 
Pourquoi ça ne marcherait pas quand je créé mes input via une boucle php for ???

mood
Publicité
Posté le 25-05-2005 à 10:12:01  profilanswer
 

n°1096035
FlorentG
Posté le 25-05-2005 à 10:15:06  profilanswer
 

bigben74 a écrit :

J'ai cherché je vois pas vraiment en quoi se différencient les fonctions DOM du JS de base, dans les exemples que j'ai trouvé on a toujours en début de fonction
MaVariable = document.form....;


Les truc genre document.monFormulaire n'ont pas un support garantit. Ca se peut très bien qu'un navigateur ne l'implémente pas. Pour accéder aux champs, il faut systématiquement utiliser getElementById.
 

n°1096037
FlorentG
Posté le 25-05-2005 à 10:16:50  profilanswer
 

Aussi, un document.monFormulaire oblige à utiliser l'attribut name sur le form, mais la recommandation nous dit ça :

Citation :

name = cdata [CI]
    This attribute names the element so that it may be referred to from style sheets or scripts. Note. This attribute has been included for backwards compatibility. Applications should use the id attribute to identify elements.


Donc c'est là juste pour être compatible, et on est encouragé à être plus moderne et à utiliser un id :)

n°1096207
cerel
Posté le 25-05-2005 à 11:17:58  profilanswer
 

bigben74 a écrit :

J'ai cherché je vois pas vraiment en quoi se différencient les fonctions DOM du JS de base, dans les exemples que j'ai trouvé on a toujours en début de fonction
MaVariable = document.form....;
 
Enfin tant pi j'ai fais un test en page statique:

Code :
  1. <html>
  2. <head>
  3. <script>
  4. function check_form(form, nb)
  5. {
  6. var retour = false;
  7. var nb_vides = 0;
  8.   if (form.valider.value == "terminer" )
  9.   {
  10.     for (x=0; x<nb; x++) { 
  11.         if (document.getElementById('nom'+x).value.length < 2)
  12.         {
  13.          nb_vides++; 
  14.         }
  15.     }
  16. if (nb_vides == 0)
  17.  retour = true;
  18. if (nb_vides == 1)
  19.  alert("1 champ est vide" );
  20. if (nb_vides > 1)
  21.  alert (nb_vides + " champs sont vides" );
  22.     return retour;
  23.   }
  24. }
  25. </script>
  26. </head>
  27. <body>
  28. <form method="get" onSubmit="return check_form(this,4)">
  29. <input type=text name="nom[0]" id="nom0"><br>
  30. <input type=text name="nom[1]" id="nom1"><br>
  31. <input type=text name="nom[2]" id="nom2"><br>
  32. <input type=text name="nom[3]" id="nom3"><br>
  33. <input type="submit" value="terminer" name="valider">
  34. </form>
  35. </body>
  36. </html>


 
Et bien ça, ça marche nikel... (avec " ou ', c'est la même chose)
 
Pourquoi ça ne marcherait pas quand je créé mes input via une boucle php for ???


C'est normal que ton form n'ai pas de propriete action ?`
SI ton formulaire est traite par php, alors tu peux utiliser tout betement name="nom[]", pas besoin d'y indiquer les numeros.  
N'oublie pas metre des " pour l'atribut type.

n°1096275
bigben74
Posté le 25-05-2005 à 11:32:09  profilanswer
 

pas de panique, ça c'était pour les tests, évidement qu'il y a une propriété action...
pour les numéros de nom[], si on les mets pas ça marche, mais je me suis aperçu par exemple que si tu faisais pareil avec des checkbox

Code :
  1. <input type=text name="nom[]" id="nom0"><input type=checkbox name="box[]">
  2. <input type=text name="nom[]" id="nom1"><input type=checkbox name="box[]">
  3. <input type=text name="nom[]" id="nom2"><input type=checkbox name="box[]">

c'est mort, tu sais pas lesquelles ont été cochées, enfin c'est peut-être juste dans mon cas... Mais résultat vu que j'ai le numéro de la ligne sous la main, je le met et comme ça je suis tranquille.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [résolu][PHP/JS] Formulaire avec input name="nom[]"

 

Sujets relatifs
[RESOLU][Javascript] Mise en page compliquée :)[Resolu] Récupérer le mois à partir du numero de semaine
[résolu] fonction (mail) - bizarreriede l aide pour ecrire cgi et formulaire merci
Question sur PHP/Flash MXProbleme Iframe et Textarea [Résolu]
2 submit différents pour un seul formulaire[SQL] jointure <> [resolu mais pas normalement]
[MySQL] Concaténation de champs [Résolu] 
Plus de sujets relatifs à : [résolu][PHP/JS] Formulaire avec input name="nom[]"


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR