Pour information et pour poser les bases, mon but est de créer une base de données de recettes dans lequel il y a plusieurs champs (nom de la recette, temps, liste d'ingrédients etc).
Lorsque j'appuie sur le bouton valider de la saisie d'une nouvelle recette, j'ai un message d'erreur que je pense comprendre mais que je n'arrive pas à résoudre: ERREUR : SQLSTATE[HY093]: Invalid parameter number: no parameters were bound
Avant de vous poster mon code, j'ai peut être une piste mais j'ai essayé de trouver une solution dans de nombreux forums mais je ne trouve aucun sujet correspondant à mon problème.
J'ai un champ idrec correspondant à un identifiant auto_increment donc clé primaire. Il me semble qu'il ne faut pas le passer lors de l'insertion des valeurs ou je me trompe ? sinon je ne vois pas où est mon erreur. Voici les 2 codes: celui de ma page principale (formulaire de saisie et celui de l'ajout des données dans la table "recettes".
En espérant avoir été aussi clair que possible.
Merci de votre aide.
page principale:
Code : Tout sélectionner
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Saisie d'une recette</title>
</head>
<body>
<?php
require 'connectbd.php';
try
{
$options =
[
PDO ::MYSQL_ATTR_INIT_COMMAND =>'SET NAMES utf8',
PDO ::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
];
$PDO = new PDO($DB_DSN, $DB_USER, $DB_PASS, $options);
echo "Connexion établie";
$sql = 'SELECT * FROM type_recette';
$resultat = $PDO->query($sql);
?>
<form method ="post" action="page2.php">
<label> Nom de la recette : <input name="nom_recette" value =""></label>
<p>
<label> Liste des ingrédients : <input name="liste_ing" value =""></label>
<p>
type de recette :
<select name = "type_recette">
<?php
foreach($resultat as $re)
{
?>
<option>
<?php echo $re['type_recette']; ?>
</option>
<?php
}
?>
</select>
<label> Nom du magazine : <input name="nom_magazine" value =""></label>
<label> Page : <input name="page" value =""></label>
<label> Temps de préparation : <input name="duree_prepa" value =""></label>
<label> Temps de cuisson : <input name="duree_cuiss" value =""></label>
<br>
<input type ="submit" value="Valider" />
</form>
<?php
}
catch(PDOException $pe)
{
echo 'ERREUR : ' .$pe->getMessage();
}
?>
</body>
</html>
Code : Tout sélectionner
<?php
require 'connectbd.php';
try
{
$options =
[
PDO ::MYSQL_ATTR_INIT_COMMAND =>'SET NAMES utf8',
PDO ::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
];
$PDO = new PDO($DB_DSN, $DB_USER, $DB_PASS, $options);
$nom_recette = $_POST['nom_recette'];
$type_recette = $_POST['type_recette'];
$liste_ing = $_POST['liste_ing'];
$nom_magazine = $_POST['nom_magazine'];
$page = $_POST['page'];
$duree_prepa = $_POST['duree_prepa'];
$duree_cuiss = $_POST['duree_cuiss'];
$type_recette = $_POST['type_recette'];
$requete_insertion = $PDO->prepare ("SELECT INTO recette (idrec,nom_recette, liste_ing,nom_magazine, page, duree_prepa, duree_cuiss, type_recette) VALUES ('',:nom_recette, :liste_ing, :nom_magazine, :page, :duree_prepa, :duree_cuiss, :type_recette)");
if ($requete_insertion->execute())
{
echo "Enregistrement ajouté avec succès";
}
else
{
echo "problème insertion";
}
}
catch(PDOException $pe)
{
echo 'ERREUR : ' .$pe->getMessage();
}
?>