Bonjour à tous,
J'ai un formulaire html qui me sert pour saisir des commandes et je souhaite permettre l'enregistrement de la saisie sans avoir un recharger la page. Chaque ligne de saisie est composé de plusieurs champs (référencé, quantité, prix...) avec autant de groupe de champ que de ligne ajouté par l'utilisateur.
Mon problème est comment récupérer les données pour pouvoir les exploiter côté serveur en php.
Le formulaire html
Code html : 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
20
21
22
23
24
25
26
27
28
29 <button type="button" id="btRegisterProposition" onclick="portail.crm.registerProposition()">Enregistrer</button> !-- Groupe 1 --! <button id="removeRow" type="button" onclick="portail.crm.removeRow("pro-1")">Supprimer</button> 0-10418<input type="text" id="itmref" name="itmref" value="0-10418"> <input type="text" id="prolin" name="prolin" value="1"> <input type="text" id="qty" name="qty"> <input type="text" id="discrgval1" name="discrgval1"> <input type="text" id="discrgval2" name="discrgval2"> <input type="text" id="discrgval3" name="discrgval3"> <input type="text" id="discrgval4" name="discrgval4"> <textarea id="commentaire" name="commentaire"></textarea> !-- Groupe 2 --! BIW-HD120<input type="text" id="itmref" name="itmref" value="BIW-HD120"> <input type="text" id="prolin" name="prolin" value="2"> <input type="text" id="qty" name="qty"> <input type="text" id="discrgval1" name="discrgval1"> <input type="text" id="discrgval2" name="discrgval2"> <input type="text" id="discrgval3" name="discrgval3"> <input type="text" id="discrgval4" name="discrgval4"> <textarea id="commentaire" name="commentaire"></textarea> !-- Groupe x --! ....
J'ai cherché sur le net et avec l'aide du mal (chatGPT) je suis arrivé avec ce code
Le critère de regroupe des champs est la valeur du champ "prolin", c'est presque ça mais comme il n'y a pas de lien dans le formulaire html entre les champs d'un même groupe du coups côté javascript c'est pas top :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 publics.registerProposition = function() { var formData = new FormData($('#formCreateProposition')[0]); var formDataObject = {}; formData.forEach(function(value, key) { formDataObject[key] = value; }); var groupes = {}; groupes[formDataObject['prolin']] = formDataObject; console.log(groupes); }
Pas vraiment exploitable, j'aimerais un tableau sous cette forme (la représentation n'est pas forcément juste en terme de syntaxe, mais c'est pour imager ce que j'aimerais) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 { "itmref": "0-10418", "prolin": "2", "qty": "", "discrgval1": "", "discrgval2": "", "discrgval3": "", "discrgval4": "", "commentaire": "", "itmref-2": "BIW-HD120" }
Je débute en jquery/ajax, du coups un peu d'indulgence
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
20 { [1] { <---- correspond à la valeur du champ prolin "itmref":"0-1418", "qty": "", "discrgval1": "", "discrgval2": "", "discrgval3": "", "discrgval4": "", "commentaire": "" }, [2] { <---- correspond à la valeur du champ prolin "itmref":"BIW-HD120", "qty": "", "discrgval1": "", "discrgval2": "", "discrgval3": "", "discrgval4": "", "commentaire": "" } }
Est-ce que vous avez une idée ?
Merci d'avance.
Partager