Bonjour à tous, j'aurai besoin d'un petit coup de main pour un script de création de champ qui ne fonctionne pas.
Voici déjà le code:
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
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 <!DOCTYPE html> <html> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> <title>sans titre 1</title> <script language="javascript"> <!-- /*function create_champ() { var i = parseInt(document.getElementById('nombre').value) var i = i + 1; if(i<'4'){ document.getElementById('nombre').value = i; document.getElementById('zone_dynamique').innerHTML += '<div align="left" id="champ_"'+i+'> Nom du champ '+i+' :<input type="text" name="nom_test_'+i+'"> Choix '+i+' :<select name=" choix_test_'+i+'></select> <input name="suppr" type="button" onClick="javascript:supprime_champ()" value="Supprimer un champ"></div>'; } else{ alert('Vous avez atteint le nombre maximum de ligne'); exit(); } } function supprime_champ(){ var cpt = parseInt(document.getElementById('nombre').value); cpt--; var parent = document.getElementById('zone_dynamique'); var NodeListe = parent.getElementsByTagName("div"); if( NodeListe.length >= 2 ){ var Enfant=NodeListe[NodeListe.length-1] parent.removeChild(Enfant); document.getElementById('nombre').value = cpt } }*/ --> </script> <script> function choixChange(){ var paragraphe = document.getElementById("paragrapheSupplementaire"); paragraphe.innerHTML=document.getElementById("choix").hidden; if (document.getElementById("choix").value == "liste_1" || document.getElementById("choix").value == "bouton_1"){ paragraphe.innerHTML+="<label>Rentrez les informations:</label>" +'<input name=sous_choix type="text">'; /*+'<select name="orientation" id="orientation">' +'<option value="LP">LP</option>' +'<option value="master">master</option>' +"<option value=\"inge\">Ecole d'ingé</option>" +'<option value="boulot">Boulot</option>' +'<option value="autre">Autre</option>' +'</select>';*/ } } choixChange(); </script> </head> <body> <form id="test" name="test23" method="post" action="test_traitement23.php"> Nombre de champs : <input name="nombre" id="nombre" type="text" value="1" size="3"> <div id="zone_dynamique"> <div align="left"> Nom du champ: <input name="nom_test" type="text"/> Choix : <select name="choix_test" id="choix" onchange='choixChange();'> <option value="test_1" selected="selected">Choisir un type</option> <option value="champ_texte_1">Champ de texte</option> <option value="zone_email_1">Zone d'adresse e-mail</option> <option value="liste_1">Liste déroulante</option> <option value="bouton_1">Boutons radio</option> <option value="case_1">Cases à cocher</option> <option value="zone_texte_1">Zone de texte</option> </select> </div> <div id="paragrapheSupplementaire"> </div> <input type="submit" value="envoyer"/> </div> </form> </body> </html>
Et ma page de traitement:
En fait, je mets autant de champ que je veux dans une div pour créer un formulaire et grâce à mon code JS, je recopie ce qu'il y a dans la div pour me créer de nouveaux champs!
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 <?php print_r($_POST); $serveur = "localhost"; $base = "xxx"; $user = "root"; $pass = "xxx"; /* $mysqli est une nouvelle instance de la classe mysqli prédéfinie dans php et hérite donc de ses propriétés et méthodes connexion à la base de données */ $mysqli = new mysqli($serveur, $user, $pass, $base); // si la connexion se fait en UTF-8, sinon ne rien indiquer $mysqli->set_charset("utf8"); /* utilisation de la méthode connect_error qui renvoie un message d'erreur si la connexion échoue */ if ($mysqli->connect_error) { die('Erreur de connexion ('.$mysqli->connect_errno.')'. $mysqli->connect_error); } else { echo 'connexion réussie : '.$mysqli->host_info; } $sql = ' INSERT INTO `test23`( `nom_test`, `choix_test`, `sous_choix` ) VALUES ( \''.$_POST['nom_test'].'\', \''.$_POST['choix_test'].'\', \''.$_POST['sous_choix'].'\' ); '; $result = $mysqli->query($sql); echo $sql; $mysqli->close(); header("Location: test23.php"); ?>
C'est très bien mais je me heurte à certains problèmes notamment au niveau de la liaison avec la base de données.
C'est à dire que dans ma base de données, mon champ nom va s’appeler "nom_test" alors que dans mon code JS, j'ai besoin d'incrémenter cette variable nom pour quelle soit différente (avec "nom_test_'+i+'" par exemple).
Du coup, je ne vois pas comment faire en sorte que cette variable "nom_test_'+i+'" soit reconnu dans ma base de données?
Auriez vous une idée pour moi svp?
Merci d'avance!
PS: c'est normal si le nom de mes variables "nom_test" et "choix_test" de mon formulaire ne correspondent pas à ceux inscrit dans le JS.
Partager