Possibilité de rajouter un formulaire

Eléphanteau du PHP | 23 Messages

07 juin 2012, 08:38

Bonjour à tous,

Nouveau dans le monde du javascript je ne suis donc pas sûr si ce sujet est bien placé.

Je chercherai quelque chose qui me permette de rajouter un formulaire alors qu'un formulaire existe déjà en gros avec un bouton d'ajout et savoir comment traiter les X formulaires en une seule fois ? Peut-être la solution existe-t-elle en PHP mais le soucis c'est que ça devra sûrement recharger la page (bien que je n'ai pas trouvé jusque là).

Merci d'avance de votre aide.

Raitei.

ViPHP
ViPHP | 1996 Messages

09 juin 2012, 23:26

Regarde vers :

[javascript]var formulaire = document.createElement ("form");[/javascript]
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 23 Messages

11 juin 2012, 11:23

Regarde vers :

[javascript]var formulaire = document.createElement ("form");[/javascript]
Etant débutant, comment puis-je faire pour l'utiliser ? Faut-il l'ajouter dans une fonction ?


EDIT : j'ai trouvé un exemple sur le net, après avoir réglé un autre gros problème je regarderai pour l'ajout des formulaires, merci Aureusms :)

Eléphanteau du PHP | 23 Messages

13 juin 2012, 09:57

Bonjour à tous,

Au final ce que j'avais trouvé ne m'a pas servi à grand chose et ne correspondait pas à ce que je cherchais.

Est-il possible avec ce que tu m'as donné de répéter le même formulaire ?

Ce formulaire possède des listes déroulante liées entre elles, des inputs, un input lié à un autre en dehors du formulaire à répéter qui comptabilise les entrées pour avoir le total d'heure effectuées et sûrement d'autre listes (celui-ci n'étant pas encore complet et en perpétuel modification, dû au cahier des charges qui est modifié souvent :( ). C'est pour ça que je me demande s'il est possible de le faire, j'avais vu ce system sur le site d'inscription au "forum php 5-6 juin" mais il n'est plus disponible donc je ne peu pas étudier le code :s

Merci, Raitei.

ViPHP
ViPHP | 1996 Messages

16 juin 2012, 11:24

Tu peux bien sûr répéter le même formulaire sous Javascript mais cela devient long de rapatrier tous les enfants du formulaire.
Via la bibliothèque jQuery, tu peux créer un objet qui correspond à ton formulaire, trouver ses enfants assez facilement (input, radio, chechbox, ...) et les dupliquer. Mais (car il y a un mais !) c'est un peu déroutant pour un débutant. (il m'a fallu 15 jours pour bien comprendre le truc.)
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 23 Messages

18 juin 2012, 08:42

Tu peux bien sûr répéter le même formulaire sous Javascript mais cela devient long de rapatrier tous les enfants du formulaire.
Via la bibliothèque jQuery, tu peux créer un objet qui correspond à ton formulaire, trouver ses enfants assez facilement (input, radio, chechbox, ...) et les dupliquer. Mais (car il y a un mais !) c'est un peu déroutant pour un débutant. (il m'a fallu 15 jours pour bien comprendre le truc.)
Bonjour,

Mince... En temps normal ça ne m'aurai pas dérangé mais là, 15 jours, mon stage sera terminé ^^' Dans ce cas, je vais essayer de voir pour opter pour quelque chose de différent...

Merci de ton aide ^^

Je regarderai tout ça à l'occasion, vu le temps que ça prendra :)

Raitei

ViPHP
xTG
ViPHP | 7331 Messages

18 juin 2012, 09:34

Sinon le plus simple si ton formulaire est fixe (je veux dire connu à l'avance) c'est de passer par une technologie serveur.
En gros stocker le formulaire dans un fichier et appeler ce fichier via une requête Ajax, t'as plus qu'à coller le retour de la requête (ton formulaire) là où tu veux. ;)
Et je parlais de technologie serveur pour le cas où il faut aussi une copie des données, plus simple à récupérer et à générer dans ce cas.

Eléphanteau du PHP | 23 Messages

18 juin 2012, 10:17

Bah en fait mon formulaire est en effet connu à l'avance mais peu changer. Je m'explique, il y a 3 liste déroulante chacune d'elle liées à une autre liste donc au final il peut y avoir 6 listes déroulante, mais une d'elle ne possède pas forcément de seconde liste dans certains cas, donc des fois 5 listes, il y a aussi 2 autres liste simple, des input pour la date, et deux autres input pour la durée.

J'ai aussi dans ce formulaire 2 champs qui changent selon ce qui est saisi dans les deux derniers champs.

Donc en gros ce formulaire devrait se répéter à chaque fois qu'on clic sur le bouton par exemple "ajouter formulaire". J'essaye de réfléchir à une autre méthode peu être plus simple, mais rien que au niveau de mon tuteur c'est dur car on est pas encore sûr de ce qu'ils veulent au final etc. Donc y'a beaucoup de choses à redéfinir peut-être mais l'idée des formulaires multiple devrait rester (en théorie...).


En piece jointe l'appercu du formulaire en version beta.
Sinon, penses-tu qu'ils est possible d'envoyer dans un textarea toute les valeurs saisi dans le formulaire de gauche à l'aide du bouton "ajouter form" et ensuite à chaque fois qu'on ajoute des nouvelles valeurs dans le formulaire on les rajoute à la suite dans le textarea. Et elles ne sont envoyé qu'au moment du clic sur "envoyer" ?
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

ViPHP
xTG
ViPHP | 7331 Messages

18 juin 2012, 13:48

Tu veux dire remplir un formulaire, cliquer sur "Ajouter un formulaire" qui aurait pour but de copier les données dans un textarea puis de vider le formulaire courant.
Ainsi on re-remplie les champs, ect...
C'est cela ton idée ?

Cela peut être envisageable, après à toi de voir avec ton tuteur si c'est acceptable.
Mais sache qu'au final si tu fais ceci tu auras fait la moitié du chemin pour un script de duplication de formulaire, à savoir la récupération des données en JS. :mrgreen:

Petit nouveau ! | 9 Messages

18 juin 2012, 13:56

Si j'ai bien compris, je verrais une solution.

Au lieu de créer un nouveau formulaire, créé les 6 nouveaux champs dans le même formulaire.
Pour chaque liste déroulante, attribut leur une ID avec la synthaxe id="type1" id="type_action1", ...

Quand tu appuies sur le bouton 'ajouter un formulaire', cela rajoutera les mêmes champs de selection avec pour ID : id="type2", id="type_action2" dans le même form.
A chaque clic sur le bouton "Ajouter un formulaire", tu incrémentes une variable i.
[javascript]
var i = 1;
document.getElementById('Ajout_form').bind('click', function() {
i++;
document.getElementById('Form').innerHTML += '<input type="text" id="type' + i + '"><input type="text" id="type_action' + i + '">';
});
[/javascript]
Lors de l'envoie du formulaire, tu traites de la façon suivante
[javascript]
var champs;
for(var j = 1;j < i; j++) {
champs[j] = {
type_objet: document.getElementById('type_objet' + j),
type: document.getElementById('type' + j)
}
}
// Et tu envoies le tout avec une requete Ajax.
[/javascript]
Modifié en dernier par Kelgors le 18 juin 2012, 15:09, modifié 1 fois.

Eléphanteau du PHP | 23 Messages

18 juin 2012, 14:57

Tu veux dire remplir un formulaire, cliquer sur "Ajouter un formulaire" qui aurait pour but de copier les données dans un textarea puis de vider le formulaire courant.
Ainsi on re-remplie les champs, ect...
C'est cela ton idée ?

Cela peut être envisageable, après à toi de voir avec ton tuteur si c'est acceptable.
Mais sache qu'au final si tu fais ceci tu auras fait la moitié du chemin pour un script de duplication de formulaire, à savoir la récupération des données en JS. :mrgreen:
Oui, l'idée c'était ça. Le "ajouter" envoi dans le textarea puis vide le courant, à l'envoi via "envoyer" tout est envoyer vers ma table qui contient toute les infos.

Si j'ai bien compris, je verrais une solution.

Au lieu de créer un nouveau formulaire, créé les 6 nouveaux champs dans le même formulaire.
Pour chaque liste déroulante, attribut leur une ID avec la synthaxe id="type1" id="type_action1", ...

Quand tu appuies sur le bouton 'ajouter un formulaire', cela rajoutera les mêmes champs de selection avec pour ID : id="type2", id="type_action2" dans le même form.
A chaque clic sur le bouton "Ajouter un formulaire", tu incrémentes une variable i.
[javascript]
var i = 1;
document.getElementById('Ajout_form').bind('click', function() {
i++;
document.getElementById('Form').innerHTML += '<input type="text" id="type' + i + '"><input type="text" id="type_action' + i + '">';
});
[/javascript]
Lors de l'envoie du formulaire, tu traites de la façon suivante
[javascript]
var champs;
for(var j = 1;j < i; j++) {
champs[0] = {
type_objet: document.getElementById('type_objet' + j),
type: document.getElementById('type' + j)
}
}
// Et tu envoies le tout avec une requete Ajax.
[/javascript]
Cela ne va-t-il pas poser problème étant donné que mes listes type_objet/objet type_action/action departement/service sont liées entre elles ? Et je pense que ça va peut-être poser un soucis niveau taille de la page, je viens de voir dans mes comptes rendu de réunion que mon tuteur souhaiterai que ça soit dans une seule page et qu'il n'ai pas a descendre dans celle-ci.

En gros, peut-être que la solution du textarea serait pas mal, si il y avait possibilité de modifier des champs de celui-ci :s