tjrs sur mon sondage et la bonne nouvelle c'est qu'il fonctionne.... ou presque.
Je m'explique:
coté par formulaire:
<form action="sondage_admin.php" method="post">
<table>
<tr><td>
Question:
</br>
</td><td>
<input type="text" name="question" value="<?php if (isset($_POST['question'])) echo stripslashes(htmlentities(trim($_POST['question']))); ?>">
</td></tr>
<?php
// on teste si la variable $_POST['nb_reponses'] est définie ou pas. Si elle ne l'est pas, on la défini à 1
if (!isset($_POST['nb_reponses'])) $_POST['nb_reponses'] = 1;
echo '</br><tr><td>Réponses:</td></tr>';
// si l'utilisateur a clické sur 'Ajouter une réponse' on incrémente la variable $_POST['nb_reponses'], ce qui va nous permettre de rajouter un champ de type text
if (isset($_POST['go']) && $_POST['go']=='Ajouter une réponse') $_POST['nb_reponses']++;
for ($i=1; $i<=$_POST['nb_reponses']; $i++){
$temp = "reponse_$i";
if (isset($_POST[$temp])) $value=$_POST[$temp];
echo '<tr><td><td><input type="text" name="reponse_'.$i.'" value="';
if (isset($value)) echo stripslashes(htmlentities(trim($value)));
echo '"></td></tr>';
unset($value);
}
// on passe à notre formulaire le nombre de réponse au sondage
echo '<input type="hidden" name="nb_reponses" value="'.$_POST['nb_reponses'].'">';
echo '<tr><td><input type="submit" name="go" value="Ajouter une réponse"></td></tr>';
echo '<tr><td> </td></tr>';
echo '<tr><td><input type="submit" name="go" value="Valider"></td></tr>';
?>
</table>
</form>
J'ai tout mis au cas où mais l'idée c'est de tester l'entrée: nb_réponses, qui correspond au nombre de vote reçu.
Si elle est nulle, on la défini à 1 et si on l'incrémente on rajoute un champs supplémentaire.
Jusque là, ca fonctionnne.
Par contre côté traitement ca coince:
$question = $_POST['question'];
// on insère notre question
$query=$db->prepare('INSERT INTO forum_sondage_questions (question) VALUES (:question)');
$query->bindValue(':question', $question, PDO::PARAM_STR);
$query->execute();
//on récupère la dernière id
$query_id=$db->prepare('SELECT MAX(id) FROM forum_sondage_questions');
$query_id->execute();
$id_sondage = $query_id->fetch();
// on insère les réponses possibles à ce sondage
for ($i=1; $i<=$_POST['nb_reponses']; $i++){
$temp = "reponse_$i";
if (isset($_POST[$temp])) $value=$_POST[$temp];
$query=$db->prepare('INSERT INTO forum_sondage_reponses (id_sondage, reponse, nb_reponses) VALUES (:id_sondage, :reponse, nb_reponses)');
$query->bindValue(':id_sondage', $id_sondage, PDO::PARAM_INT);
$query->bindValue(':reponse', $value, PDO::PARAM_STR);
$query->bindValue(':nb_reponses', 0, PDO::PARAM_INT);
$query->execute();
$query->CloseCursor();
la question est correctement rajouté dans la bd et je récupère bien son id.
un var_dump de $value, va me retourner une réponse (donc pas null)
Mais j'ai malgrè tout :
Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
je pense que le problème vient de l'insertion des réponses mais je vois pas pourquoi...
rah je cherche toujours compliqué alors que c'est bien souvent des erreurs de ce genre :s
désolé et merci !
Problème d' incrémentation dans la bd
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Activer les erreurs PDO / (julp) htmlspecialchars / FAQ PHP / Pas d'aide par MP