Bonjour à tous,
je bloque depuis hier sur un petit soucis, j'ai un script JS qui ajoute des lignes dynamiquement dans mon tableau pour pouvoir ajouter des articles à ma commande.
L'index s'incrémente pour alimenter mon tableau qui sera passé dans ma variable $_POST.
Les lignes s'affichent correctement et l'index est incrémenté au moment du clique donc jusqu'ici tout va bien...
Le problème arrive quand j’envoie mon formulaire, seul l'index 0 (donc la ligne qui n'est pas créée par le script) est envoyé dans la variable !
Voici le code de ma page d'ajout de commande :
Voici le var_dump($_POST) :
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115 <?php session_start(); include_once('header.php'); include_once('../vars.php'); include_once('../class/commandes.php'); $html = ""; $modals = ""; $formulaire="<form method='POST' action='../controls/addcommandes.php' >"; $formulaire.="<tr> <td> <select id='sitecomm' name='site'>"; foreach ($langAgence as $agencecomm) { $formulaire.= "<option value='" . $agencecomm . "'>" . $agencecomm . "</option>"; } $formulaire.="</select></td>"; $formulaire.="<td> <input type='date' name='date' required></td>"; $formulaire.="<td> <input type='text' name='articles[0][quantite]' required></td>"; $formulaire.="<td> <select id='periph' name='articles[0][nom]'>"; foreach ($langPeripherique as $peripherique) { $formulaire.= "<option value='" . $peripherique . "'>" . $peripherique . "</option>"; } $formulaire.="</select></td>"; $formulaire.=""; $formulaire.="<td> <div class='input-group'> <textarea class='form-control' name='note' aria-label='With textarea'></textarea> </div> </td> </tr> "; ?> <div class="container-fluid"> <table class="table table-striped table-hover table-bordered table align-middle text-center shadow p-3 "> <thead class="thead"> <tr> <th>SITE</th> <th>DATE DE LA DEMANDE</th> <th>QUANTITÉ</th> <th>PÉRIPHERIQUE</th> <th>NOTE</th> </tr> <thead> <tbody> <?php echo $formulaire ?> <?php echo $html ?> </tbody> </table> <button type='button' class='btn btn-secondary' id='add-line'>+</button> <div id='buttons-form-group' class='btn-group float-end' role='group'> <a href="accueil.php"> <button type="button" class="btn btn-danger square btn-xl">Annuler</button> </a> <button type='submit' class='btn btn-primary'> Ajouter </button> </div> <script> var currentIndex = 1; // définir la variable currentIndex // Ajouter un écouteur d'événement click sur le bouton "add-line" document.getElementById('add-line').addEventListener('click', function() { // Créer une nouvelle ligne avec les champs de formulaire nécessaires var newRow = document.createElement("tr"); newRow.innerHTML = `<td></td> <td></td> <td><input type='text' name='articles[${currentIndex}][quantite]' ></td> <td><select name='articles[${currentIndex++}][nom]'> <?php foreach ($langPeripherique as $peripherique) { echo "<option value='" . $peripherique . "'>" . $peripherique . "</option>"; } ?> </select></td> <td> </td>`; // Ajouter la nouvelle ligne à la fin de la balise tbody document.querySelector('tbody').appendChild(newRow); }); </script> </form> <?php include_once('footer.php'); ?>
Ici j'avais deux lignes dans le formulaire : une avec l'index 0 pour 25 ordinateurs et une ajoutée avec l'index 1 contenant 4 téléphones qui ne figure pas dans la variable $_POST.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 C:\wamp64\www\projet\controls\addcommandes.php:4: array (size=4) 'site' => string 'GENERAL' (length=7) 'date' => string '2023-01-18' (length=10) 'articles' => array (size=1) 0 => array (size=2) 'quantite' => string '25' (length=2) 'nom' => string 'ORDINATEURS' (length=11) 'note' => string '' (length=0)
Je vous serais très reconnaissant si quelqu'un pouvait m'éclairer![]()
Partager