Bonjour,
Je souhaite faire la réception d'un questionnaire dans une base de donnée (22 questions) et j'ai un petit problème de requête.
Effectivement, lorsque le champ ID est en auto increment, le code suivant me mets une question différente sur chaque id, jusque là logique,
Et si j'enlève l'auto increment et que j'initialise l'id, seule la question 1 aura sa réponse, même avec une balise update.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 for($i=0; $i<22; $i++) { $j = $i + 1; $req = $bdd->prepare('INSERT INTO reponse_formulaire(Q'.$j.') VALUES(:reponse)') OR die('Problème de préparation'); $req->execute(array( 'reponse' => $question[$i] )) OR die('Problème d\'éxécution'); }
Quand au 2ème bout de code que j'ai mis en remplacement, il ne s’exécute pas, la requête est valide testé directement dans la BDD, mais l'exécution de l'array pose problème.
Je précise que les variables sont initialisée comme suit :
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 $req = $bdd->prepare('INSERT INTO reponse_formulaire(Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10, Q11, Q12, Q13, Q14, Q15, Q16, Q17, Q18, Q19, Q20, Q21, Q22) VALUES(:reponse1, :reponse2, :reponse3, :reponse4, :reponse5, :reponse6, :reponse7, :reponse8, :reponse9 :reponse10, :reponse11, :reponse12, :reponse13, :reponse14, :reponse15, :reponse16, :reponse17, :reponse18, :reponse19, :reponse20, :reponse21, :reponse22)') OR die('Problème de préparation'); $req->execute(array( 'reponse1' => $question[0], 'reponse2' => $question[1], 'reponse3' => $question[2], 'reponse4' => $question[3], 'reponse5' => $question[4], 'reponse6' => $question[5], 'reponse7' => $question[6], 'reponse8' => $question[7], 'reponse9' => $question[8], 'reponse10' => $question[9], 'reponse11' => $question[10], 'reponse12' => $question[11], 'reponse13' => $question[12], 'reponse14' => $question[13], 'reponse15' => $question[14], 'reponse16' => $question[15], 'reponse17' => $question[16], 'reponse18' => $question[17], 'reponse19' => $question[18], 'reponse20' => $question[19], 'reponse21' => $question[20], 'reponse22' => $question[21] )) OR die('Problème d\'éxécution');
Les question 2, 6, 8, 10, 11, 15, 18 sont des array de checkbox et les 19 et 20 sont des horaires ouverture et fermeture donc deux champs date.
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 $Q2 = ""; foreach($_POST['Q2'] as $valeur) { $Q2 = $Q2." ".$valeur; } $Q6 = ""; foreach($_POST['Q6'] as $valeur) { $Q6 = $Q6." ".$valeur; } $Q8 = ""; foreach($_POST['Q8'] as $valeur) { $Q8 = $Q8." ".$valeur; } $Q10 = ""; foreach($_POST['Q10'] as $valeur) { $Q10 = $Q10." ".$valeur; } $Q11 = ""; foreach($_POST['Q11'] as $valeur) { $Q11 = $Q11." ".$valeur; } $Q15 = ""; foreach($_POST['Q15'] as $valeur) { $Q15 = $Q15." ".$valeur; } $Q18 = ""; foreach($_POST['Q18'] as $valeur) { $Q18 = $Q18." ".$valeur; } if (isset($_POST['Q19'])) { $Q19 = ""; foreach($_POST['Q19'] as $valeur) { $Q19 = $Q19." ".$valeur; } } else { $Q19 = "00:00 00:00"; } if (isset($_POST['Q20'])) { $Q20 = ""; foreach($_POST['Q20'] as $valeur) { $Q20 = $Q20." ".$valeur; } } else { $Q20 = "00:00 00:00"; } $question = array ($_POST['Q1'], $Q2, $_POST['Q3'], $_POST['Q4'], $_POST['Q5'], $Q6, $_POST['Q7'], $Q8, $_POST['Q9'], $Q10, $Q11, $_POST['Q12'], $_POST['Q13'], $_POST['Q14'], $Q15, $_POST['Q16'], $_POST['Q17'], $Q18, $Q19, $Q20, $_POST['Q21'], $_POST['Q22']);
J'attends vos avis sur mon problème, j'ai déjà une piste qu'il faut que j'explore encore aujourd'hui, transformer mon tableau en tableau de char avec "'".$_POST['Q16']."'" voir si il y a exécution ou pas, les réponses dans la BDD étant définies comme des varchar.
Partager