Formulaire avec nombre de paramètres variant

Petit nouveau ! | 1 Messages

19 mai 2006, 11:29

Bonjour

Je suis en train de développer un formulaire en intranet.
J'explique le principe dans un exemple concret:

Formulaire de gestion des compétences (génération de CV par exemple):
un lien ajouter une compétence
a chaque fois une textbox est rajoutée.

y'aurait il un moyen pour passer tous les éléments d'un formulaire sans être obligé de dire
MonObjetXHR.send('param1=...&param2=...&param3...=', 'mapage')
car le nombre de paramètres est inconnu à priori.

Il y a toujours un champs hidden qui compte le nombre, mais je n'ai pas vraiment envie de faire une boucle qui rajoute comme par exemple
param+= document.getElementById('param'+i).value;

Quelqu'un a-t-il une autre solution?

Eléphant du PHP | 353 Messages

19 mai 2006, 11:36

et si tu envoyais directement sous forme d'array !
tu traites ensuite l'array dans la page appelée par ton objetXHR !

Mammouth du PHP | 1353 Messages

19 mai 2006, 11:37

tu peux mettre tout tes parametre à la suite les un des autres en les séparant par un caractère ou un ensemble de caractere que tu auras definis, envoyer la string la récupérer et la reséparer.

Par exemple entre chaque paramètre tu fais un string comme ceci
param1<sep>param2<sep>... Et quand tu récupère le string tu l'explose en cherchant les <sep>.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

19 mai 2006, 11:48

Si ce que tu cherches, c'est comment récupérer tous les inputs en Javascript, tu peut utiliser document.forms['formName'].getElementsByTagName("input") qui va te retourne la liste des inputs du formulaire formName

A partir de là, tu peut construire dynamiquement ta chaine en JS
var a_input = document.forms['formName'].getElementsByTagName("input");
var str_parametre = "monfichier.php?";
for (var i = 0; i < a_input.length; i++) {
  var input = a_input[i];
  str_parametre = str_paramete+"&"+input.getAttribute('name')+"="+input.value;
}
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer