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:
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");
 
?>
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!
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.