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
Citation:
idplaylist
titre
genre
download
champ1
champ2
..
champ16
|
Code :
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 :
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();
}
}
?> |