J'ai un petit projet perso pour faire un CRUD de base de recettes (çà c'est pour l'explication) dans lequel j'ai 3 tables ; magazine, recettes et type_recettes.
Or j'ai une clé étrangère id_type dans la table recettes qui correspond à id_type de ma table type_recettes.
Pour résumer la situation: j'ai un formulaire HTML qui recueille les données en POST sur une nouvelle page (ajout_recettes.php).
Jusque là tout va bien. Mes valeurs sont bien récupérées.
En revanche, je n'arrive pas à exécuter une requête préparée pour récupérer l'id correspondant au type de recettes passé.
Exemple : si l'utilisateur a choisi Entrée froide (valeur que je récupère dans ma variable $_POST["nom_type'" ] dans le formulaire, je veux récupérer l'id de Entrée froide pour l'insérer dans ma table recettes.
J'ai donc créé une requête préparée (qui me semble correcte). Voici la partie du code que je n'arrive pas à faire fonctionner.
Avant tout je précise que ce n'est pas un problème de récupération de données du formulaire puisque je les ai toutes testées par des echo $_POST(cf début de mon code).
<?php
//include ('connexion.php');
try {
$bdd = new PDO('mysql:host=127.0.0.1;dbname=recettes','root','');
$bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (\Exception $e) {
echo 'erreur '.$e;
}
echo "formulaire d'insertion des recettes dans la base";
echo "<br/>"
echo 'le nom de la recette est : '.$_POST["nom_recette"];
echo "<br/>";
echo 'dans le magazine '.$_POST["nom_mag"];
echo "<br/>";
echo 'Le type de recette est ' .$_POST["nom_type"];
echo "<br/>";
echo 'Elle se situe à la page N° '.$_POST["page"];
echo "<br/>";
echo 'Liste des ingrédients est ' .$_POST["ingredients"];
echo "<br/>";
echo 'La difficulté est '.$_POST["difficulte"];
echo "<br/>";
echo 'Le temps de préparation est de '.$_POST["preparation"];
echo "<br/>";
echo 'Le temps de cuisson sera de '.$_POST["cuisson"];
echo "<br/>";
//$_POST["type"];
echo $_POST["nom_type"]; //Pour tester si je récupère bien la valeur
echo "<br/>";
$sql="SELECT id_type, nom_type from type_recettes WHERE nom_type=?";
$requete=$bdd->prepare($sql);
//var_dump($requete);
$tableau=array($_POST["nom_type"]);
$requete->execute($tableau);
//var_dump($requete);
while ($donnees=$requete->fetchObject())
{
echo $donnees['id_type'];
echo "<br/>";
}
?>
L'affichage du résultat de ma requête ne donne rien. Il y a donc forcément un problème dans l'exécution/paramétrage de ma requête mais je ne vois pas où.Merci de m'éclairer.
Cordialement,
Christophe,
Supra débutant en php.