Problème d'insertion avec PDO
Résolu
Rune188
Messages postés
65
Date d'inscription
Statut
Membre
Dernière intervention
-
Rune188 Messages postés 65 Date d'inscription Statut Membre Dernière intervention -
Rune188 Messages postés 65 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je tente de créé une méthode qui permet d'insérer les réponse d'un formulaire dans une base de donnée en utilisant PDO.
J'ai déjà créé une méthode de suppression qui fonctionne donc j'arrive à interagir avec la DB mais ma méthode d'insertion ne semble pas s'exécuter.
Et je n'ai aucun message d'erreur et donc je n'arrive pas à déterminer d'où viens le problème :(
mon formulaire:
Ma méthode d'ajout:
l'appel de la fonction d'ajout dans mon contrôleur:
je tente de créé une méthode qui permet d'insérer les réponse d'un formulaire dans une base de donnée en utilisant PDO.
J'ai déjà créé une méthode de suppression qui fonctionne donc j'arrive à interagir avec la DB mais ma méthode d'insertion ne semble pas s'exécuter.
Et je n'ai aucun message d'erreur et donc je n'arrive pas à déterminer d'où viens le problème :(
mon formulaire:
<?php require ('C:\xampp\htdocs\PhpProject1\model\AreaDAO.php'); require ('C:\xampp\htdocs\PhpProject1\model\AnimalDAO.php'); require ('C:\xampp\htdocs\PhpProject1\model\EatBehavior.php'); require ('C:\xampp\htdocs\PhpProject1\model\AccessBehavior.php'); require ('C:\xampp\htdocs\PhpProject1\model\Animal.php'); require ('C:\xampp\htdocs\PhpProject1\model\Area.php'); $animalDAO = new AnimalDAO(); $areaDAO = new AreaDAO(); $animals = $animalDAO->fetch_all(); $areas = $areaDAO->fetch_all(); ?> <h2>Ajouter un animal:</h2> <form method="post" action="../controller/IndexController.php"> <label for="nm">Nom:</label><br> <input type="text" id="nm" name="nm"><br> <label for="rc">Race:</label><br> <input type="text" id="rc" name="rc"> <p>Genre:</p> <input type="radio" id="male" name="gender" value="male"> <label for="male">Male</label><br> <input type="radio" id="female" name="gender" value="female"> <label for="female">Female</label> <p>Alimentation:</p> <input type="radio" id="car" name="alim" value="Carnivore"> <label for="car">Carnivore</label><br> <input type="radio" id="herb" name="alim" value="Herbivore"> <label for="herb">Herbivore</label><br> <input type="radio" id="omni" name="alim" value="Omnivore"> <label for="herb">Omnivore</label><br> <p>Zone:</p> <?php foreach($areas as $area): ?> <input type="radio" id="ar" name="ar" value="<?php echo $area->getPk(); ?>"> <label for="ar"><?= $area->get_name(); ?></label><br> <?php endforeach; ?> <input type="submit" value="Ajouter"> </form>
Ma méthode d'ajout:
public function addAnimal($rc,$nm,$gender,$diet,$area){ try{ $statement = $this->connection->prepare("INSERT INTO {$this->table} (race, name, gender, diet,area) VALUES (?,?,?,?,?)"); $statement->bindParam(1, $rc); $statement->bindParam(2, $nm); $statement->bindParam(3, $gender); if ($diet instanceof CarnivoreEatBehavior) { $eat="Carnivore"; } if ($diet instanceof HerbivoreEatBehavior) { $eat="Herbivore"; } if ($diet instanceof OmnivoreEatBehavior) { $eat="Omnivore"; } $statement->bindParam(4, $eat); $statement->bindParam(5, $area); $statement->execute(); } catch (Exception $e) { print $e->getMessage(); } }
l'appel de la fonction d'ajout dans mon contrôleur:
//Ajout d'animal: if((isset($_POST["nm"])&&($_POST["nm"]!=""))&&(isset($_POST["rc"])&&($_POST["rc"]!="")) &&(isset($_POST["gender"])&&($_POST["gender"]!=""))&&(isset($_POST["alim"]) &&($_POST["alim"]!=""))&&(isset($_POST["ar"])&&($_POST["ar"]!=""))) { $nm=($_POST["nm"]); $rc=($_POST["rc"]); $gd=($_POST["gender"]); if($_POST["alim"]=="Carnivore") { $eat = new CarnivoreEatBehavior(); } if($_POST["alim"]=="Herbivore") { $eat = new HerbivoreEatBehavior(); } if($_POST["alim"]=="Omnivore") { $eat = new OmnivoreEatBehavior(); } $area=$_POST["ar"]; $anDAO = new AnimalDAO(); $anDAO->addAnimal($nm, $rc,$gd, $eat, $area); header("Location: http://localhost/PhpProject1/index.php"); }
A voir également:
- Problème d'insertion avec PDO
- Touche insertion clavier - Guide
- Insertion sommaire word - Guide
- Insertion filigrane word - Guide
- Insertion liste déroulante excel - Guide
- Insertion signature word - Guide
2 réponses
Bonjour,
Tu ne vois pas d'erreur, car tu as une redirections dans ton code....
Il faut la mettre en commentaire le temps de déterminer le souci.
Il faut également que tu aies activé l'affichage des erreurs dans la connexion à ta bdd
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Ensuite, quelques remarques sur ton code....
Lorsque tu fais
ça peut plus simplement s'écrire :
Il ne faut pas mettre le chemin ( dans tes require) à partir du C: de ton ordi .. car lorsque tu vas héberger ton site sur un serveur, le chemin ne sera plus du tout le même......
Il faut utiliser les chemins relatifs... ou éventuellement absolus ( mais à partir de la racine de ton site ( la racine étant dans le dossier PhpProject1 ))
par exemple
devient un truc du genre
ou
Tu ne vois pas d'erreur, car tu as une redirections dans ton code....
Il faut la mettre en commentaire le temps de déterminer le souci.
//header("Location: http://localhost/PhpProject1/index.php");
Il faut également que tu aies activé l'affichage des erreurs dans la connexion à ta bdd
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Ensuite, quelques remarques sur ton code....
Lorsque tu fais
isset($_POST["nm"])&&($_POST["nm"]!="")
ça peut plus simplement s'écrire :
!empty($_POST["nm"])
Il ne faut pas mettre le chemin ( dans tes require) à partir du C: de ton ordi .. car lorsque tu vas héberger ton site sur un serveur, le chemin ne sera plus du tout le même......
Il faut utiliser les chemins relatifs... ou éventuellement absolus ( mais à partir de la racine de ton site ( la racine étant dans le dossier PhpProject1 ))
par exemple
require ('C:\xampp\htdocs\PhpProject1\model\AreaDAO.php');
devient un truc du genre
//Si tu as défini un virtualhost pointant à la racine de ton site PhpProject1 require ('model/AreaDAO.php');
ou
// Si ton formulaire se trouve à la racine de PhpProject1 require (__DIR__ . '/model/AreaDAO.php'); // Si ton formulaire se trouve dans un sous dossier à la racine de PhpProject1 require (__DIR__ . '/../model/AreaDAO.php');