Bonjour à tous, je bloque sur l'insertion de la variable "champ" dans ma base.
Explications : J'ai dans mon formulaire, un champ ou l'ont doit rentrer un nombre. En fonction de son nombre, le formulaire affiche x champ.
Le problème c'est que je n'arrive pas à modifier ma requete sql pour ajouter les x champs .
Structure de ma base
idplaylist
titre
genre
download
champ1
champ2
..
champ16
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
90
91
92
93 <?php // si l'utilisateur soumet le formulaire on affiche la valeur de tous les champs du formulaire if (isset($_POST['submit']) && $_POST['submit'] == "Envoyer") { // on affiche le nombre de champs du formulaire //echo 'Nombre de champs : '.$_POST['nb_champs'].'<br />'; // on affiche la valeur des champs du formulaire for ($i=1; $i<=$_POST['nb_champs']; $i++) { $dynamique = 'champs_'.$i; $champ = $_POST[$dynamique]; //echo 'Champ '.$i.' : '.$champ.'<br />'; } $idplaylist=$_POST['idplaylist']; $titre=$_POST['titre']; $genre=$_POST['genre']; $download=$_POST['download']; $playlist=new playlist($db); $nb=$playlist->insertAll($idplaylist, $titre, $genre, $download, $champ); if($nb!=1) { echo'Erreur'; } else { echo'Votre message à bien été envoyé !<br />'; echo'Vous allez être redirigé dans quelques secondes..'; echo'<script LANGUAGE="JavaScript"> setTimeout("window.location=\'index.php?page=comixhouse.php\'",6000); // delai d\'attente en ms </script> '; } } // sinon on affiche le formulaire avec la possibilité d'ajout des champs au formulaire else { // on défini le nombre initial de champs if (!isset($_POST['nb_champs'])) { $_POST['nb_champs'] = 1; } // si la personne clic sur "un champs en +", on ajoute un champs if (isset($_POST['submit']) && $_POST['submit'] == "Un champs en +") { $_POST['nb_champs']++; } // on affiche le formulaire echo' <form onsubmit="return verif()"action="index.php?page=ajoutplaylist.php" method="POST" enctype="multipart/form-data">'; // on place un champ caché contenant un entier ayant comme valeur le nombre de champs du formulaire echo '<INPUT TYPE="hidden" NAME="nb_champs" VALUE="'.$_POST['nb_champs'].'">'; echo' <input type ="hidden" id="idplaylist" name="idplaylist"/> <p><label for="titre">Titre :</label> <input type ="text" id="titre" name="titre" /> </p> <p><label for="genre">Genre :</label> <input type ="text" id="genre" name="genre" /> </p> <p><label for="download">Download :</label> <input type ="text" id="download" name="download" /> </p> '; // on affiche tous les champs du formulaire for ($i=1; $i<=$_POST['nb_champs']; $i++) { echo ' <p><label for="champ">Champ '.$i.' :</label> <INPUT TYPE="text" name="champs_'.$i.'" id="champs_'.$i.'"></p><br />'; } // on place un bouton permettant de rajouter un champs echo '<INPUT TYPE="submit" NAME="submit" VALUE="Un champs en +"><br />'; // on place un bouton permettant de soumettre le formulaire echo '<INPUT TYPE="submit" NAME="submit" VALUE="Envoyer">'; echo '</FORM>'; } ?>
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 <?php class playlist { private $selectAll; private $insertAll; private $deleteOne; public function __construct($db) { $this->selectAll = $db->prepare("select * from playlist "); $this->insertAll=$db->prepare("INSERT INTO playlist values (:idplaylist, :titre, :genre, :download, :champ)"); $this->deleteOne=$db->prepare("delete from livre where idplaylist=:idplaylist"); } public function selectAll() { $this->selectAll->execute(); return $this ->selectAll->fetchAll(); } public function insertAll($idplaylist, $titre, $genre, $download, $champ) // paramétres (valeurs insérées dans la table) { $this->insertAll->execute(array(':idplaylist'=>$idplaylist, ':titre'=>$titre, ':genre'=>$genre, ':download'=>$download, 'champ'=>$champ )); // execution de la requete return $this->insertAll->rowCount(); // fetchall renvoie tout les resultats } public function deleteOne ($idplaylist) // entre les () => paramètres { $this->deleteOne->execute(array(':idplaylist'=>$idplaylist)); return $this->deleteOne->rowCount(); } } ?>
Partager