un formulaire dynamique ?

yannouff
Invité n'ayant pas de compte PHPfrance

05 févr. 2012, 16:23

Bonjour a tous,

contexte :
J'ai un formulaire, contenant 4 entrées simple. et un bouton "autres" qui DEVRAIS ajouter a chaque fois que je clique sur ce bouton, un champs supplémentaire !
de base, il y a 4 champs,
si je clique, apparaît un 5eme,
si je re-clique, un 6eme
etc ...

mais je ne sais pas trop comment m'y prendre ! Auriez vous une suggestion a me faire ? ou une méthode pk pas ? :)

Eléphanteau du PHP | 39 Messages

06 févr. 2012, 03:44

Ce n'est pas du PHP qu'il te faut ici, c'est du JavaScript(Je ne pense pas que PHP est capable de faire ça) :

Code : Tout sélectionner

<script> function add_input() { var element = document.createElement("input"); element.setAttribute("type", "text"); element.setAttribute("name", "nom"); var input_target = document.getElementById("target"); input_target.appendChild(element); } </script> <form> <input type="text"/><br/> <span id="cible"></span> <br/> <input type="button" value="add" onclick="add_input();"/> </form>
Par contre, je ne sais pas comment ajouter un saut de ligne après chaque input, du coup ils s'affichent tous en ligne, mais je suis sûr que tu es déjà plus prêt de ton but ;)

Si tu as besoin que je te l'explique, tu n'as qu'a demander.
“We spend money that we do not have, on things we do not need, to impress people who do not care.”
― Will Smith

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 févr. 2012, 13:19

attention au nom du champ, il faut utiliser la notation tableau pour récupérer une tableau ensuite.

par exemple
<input type="text" name="autre[]" /> et dans la validation $_POST['autre'] (si method="post") est un tableau avec un élément par input existant.

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 39 Messages

07 févr. 2012, 01:25

Ce n'est pas du PHP qu'il te faut ici, c'est du JavaScript(Je ne pense pas que PHP est capable de faire ça) :

Code : Tout sélectionner

<form> <input type="text"/><br/> <span id="cible"></span> <br/> <input type="button" value="add" onclick="add_input();"/> </form>
Désolé, j'ai fait une erreur dans le forumulaire, le id "cible" est en réalité "target". De plus, tu peux peut-être changer le span pour un div pour créer un saut de ligne après chaque formulaire.

attention au nom du champ, il faut utiliser la notation tableau pour récupérer une tableau ensuite.

par exemple
<input type="text" name="autre[]" /> et dans la validation $_POST['autre'] (si method="post") est un tableau avec un élément par input existant.

@+
Il est probablement possible de faire une variable javascript qui s'incrémente qui donnerait des noms comme "input_1", "input_2", etc. Quoi que la façon que Moogli propose est probablement mieux que la mienne.

Voici un exemple avec cette variable :

Code : Tout sélectionner

<script> var input_nbr = 1; function add_input() { var element = document.createElement("input"); element.setAttribute("type", "text"); element.setAttribute("name", "input_"+input_nbr); var input_target = document.getElementById("target"); input_target.appendChild(element); input_nbr++; } </script>
“We spend money that we do not have, on things we do not need, to impress people who do not care.”
― Will Smith

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

07 févr. 2012, 11:51

le problème de l'input_truc c'est de devoir gérer le "truc" hors ce n'est pas toujours simple ^^, l'avantage du tableau c'est que tu utilise un simple foreach ;)


@+
Il en faut peu pour être heureux ......