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

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>
PHP
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