Bonjour,
Je travaille sur un formulaire de commande ( de peinture ), l'utilisateur final pourra commandé autant de pot qu'il le souhaite.
Mais depuis hier je galére pour l'ajout de champs et sont traitement.
J'arrive a dupliquer le champs, afficher les valeurs avec print_r.
Mais c'est tout ...
Voici le code : 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
30
31
32
33
34
35
36
37
38
39 Formulaire peinture <br> <form name="form_peinture" method="post" action="index.php" enctype="multipart/form-data"><br> adresse mail : <input type="text" name="mail" value="<?php echo (isset($_POST['mail'])) ? $mail : '' ?>"/> <br><br> Secteur : <select id="secteur" name="secteur"/> <br> <option value=""></option> <option value="nord" <?php if(isset($_POST['secteur']) && $_POST['secteur'] == "nord") echo 'selected="selected"'; ?>>Nord </option> <option value="paris" <?php if(isset($_POST['secteur']) && $_POST['secteur'] == "paris") echo 'selected="selected"'; ?>>Paris</option> <option value="bretagne" <?php if(isset($_POST['secteur']) && $_POST['secteur'] == "bretagne") echo 'selected="selected"'; ?>>Bretagne</option> <option value="lyon" <?php if(isset($_POST['secteur']) && $_POST['secteur'] == "lyon") echo 'selected="selected"'; ?>>Lyon</option> <option value="marseille" <?php if(isset($_POST['secteur']) && $_POST['secteur'] == "marseille") echo 'selected="selected"'; ?>>Marseille</option> <option value="evreux" <?php if(isset($_POST['secteur']) && $_POST['secteur'] == "evreux") echo 'selected="selected"'; ?>>Evreux</option> <option value="cannes" <?php if(isset($_POST['secteur']) && $_POST['secteur'] == "cannes") echo 'selected="selected"'; ?>>Cannes</option> </select> <br><br> Pour la ville de :<input type="text" name="ville" value="<?php echo (isset($_POST['ville'])) ? $ville : '' ?>"/> <br><br> Site ( code affaire ) : <input type="text" name="code_aff" value="<?php echo (isset($_POST['code_aff'])) ? $code_aff : '' ?>"/> <br><br> Magasin souhaité : <input type="text" name="mag_peinture" value="<?php echo (isset($_POST['mag_peinture'])) ? $mag_peinture : '' ?>"/> <br><br> Ville magasin souhaité : <input type="text" name="ville_mag_peinture" value="<?php echo (isset($_POST['ville_mag_peinture'])) ? $ville_mag_peinture : '' ?>"/> <br><br> <label>Pot de peinture</label><br /> <div class="article"> Support : <input type="radio" name="type_peinture__0" value="bois" /> <label for="bois">Bois</label> <input type="radio" name="type_peinture__0" value="metal" /> <label for="metal">Métal</label> <input type="radio" name="type_peinture__0" value="sol" /> <label for="sol">Sol</label> <input type="radio" name="type_peinture__0" value="autre" /> <label for="autre">Autre :</label> <input type="text" name="peinture_autre__0" /> Couleur <input type="text" name="couleur_peinture__0" /> RAL <input type="text" name="ral_peinture__0" /> Date retrait <input type="text" name="date_retrait_peinture__0" "/> </div> <div id="ajoutSupprimerArticle"> <a href="javascript:;" title="Ajouter un article" class="ajoutArticle" rel="article">Ajouter une ligne</a> <a href="javascript:;" title="Supprimer un article" class="supprimerArticle" rel="article">Supprimer</a> </div>
jQuery
PHP
Code javascript : 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 <script type="text/javascript"> $(document).ready(function () { $(".supprimerArticle").hide(); $(".ajoutArticle").click(function (){ var form = $(this).closest('form'); var articleList = form.find('.article'); // Le nombre d'articles déjà présents var n = articleList.length; // Le premier article que l'on va cloner var firstArticle = $(articleList[0]); // Le dernier article de la liste var lastArticle = $(articleList[n-1]); // Un article cloné var clonedArticle = firstArticle.clone(); // Pour chaque input clonés clonedArticle.find(':input').each(function() { // On vide la valeur $(this) .filter(':text').val('').end() .filter(':radio').removeAttr("checked"); // On change le nom en ajoutant le numero $(this).attr('name', $(this).attr('name')+n); }) // On l'ajoute au dom après les autres clonedArticle.insertAfter(lastArticle).hide().fadeIn('slow'); // On ajoute le le lien de suppression $(".supprimerArticle").fadeIn("fast"); }); $(".supprimerArticle").click(function (){ var article = $(".article:last"); article.remove(); // S'il y a moins de 2 articles (autrement dit un seul) on cache le bouton supprimer. if ( $(".article").length < 2 ) { $(".supprimerArticle").fadeOut("fast"); } }); }); </script>
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 if (!empty($_POST)) { //The values have been posted $elements = array(); foreach ($_POST as $key => $val) { //For every posted values $frags = explode("__", $key); //we separate the attribute name from the number $id = $frags[1]; //That is the id $attr = $frags[0]; //And that is the attribute name if (!empty($val)) { //We then store the value of this attribute for this element. $elements[$id][$attr] = htmlentities($val); } } } print_r($elements);
Le print_r affiche :
Array ( [] => Array ( [type_commande] => peinture [mail] => mail [secteur] => nord [ville] => ville [code_aff] => code aff [mag_peinture] => mag [ville_mag_peinture] => ville mag [envoyer_peinture] => Envoyer ) [0] => Array ( [type_peinture] => bois [couleur_peinture] => couleur1 [ral_peinture] => ral1 [date_retrait_peinture] => date retrait 1 ) [01] => Array ( [type_peinture] => metal [couleur_peinture] => couleur [ral_peinture] => ral2 [date_retrait_peinture] => date retrait 2 ) )
Le but est de récupéré une fois les informations qui ne changent pas ( ville, mail,...) puis chaque commande de pot ex :
Pot 1 : support : bois, couleur , rouge , ral 1000, date 1/07/2014
Pot 2 : support : metal, couleur , rouge , ral 1000, date 1/07/2014
etc...
Ca fonctionne a peu prés même si le code ne doit pas être très propre et pas spécialement optimisé.
Merci pour votre futur aide![]()
Partager