Bonjour,
Je ne comprends pas comment modifier les enregistrement d'une base de données à partir d'un formulaire php. Voici ce que j'ai essayé :
J’ai une base de données comprenant une liste de biens immobiliers.
Lorsque je clique sur un élément de ma liste de biens, j’envoie une requête GET à mon url. $_GET[‘bien’] contient l’id de mon bien (sa clé primaire auto-incrémentée). Un formulaire de saisie s'affiche alors qui me permet de saisir de nouvelles valeurs pour les champs de mon bien.
Lorsque je soumets le formulaire, je crée donc un objet BienDAO , qui va m’aider à modifier ma base de données.
Cet objet me renvoie une connexion à ma base de données. C’est l’objet qui gère les méthodes CRUD avec ma base de données : Je crée donc un bien qui reprend les valeurs des champs de l’enregistrement correspondant à l’id en question dans ma base de données :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $dao = new BienDAO() ;
La méthode trouver() est définie ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $bien = $dao->trouver($_GET['bien']);
Je fais donc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 public function trouver($id) { $id = (int) $id; $req = $this->bdd->query('SELECT * FROM biens WHERE id = '.$id); $donnees = $req->fetch(); $bien_trouve = new Bien(); foreach ($donnees as $attr => $valeur) { $setter = 'set'.ucfirst($attr); $bien_trouve->$setter($valeur); } return $bien_trouve; }
Quant à la méthode modifier() la voici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 foreach ($_POST as $attr => $valeur) { $setter = 'set'.ucfirst($attr); if(method_exists($dao, $setter)) { $bien->$setter($valeur); } } $bien->setId((int) $_GET['bien']); $dao->modifier($bien);
Je ne comprends pas pourquoi la modification n’est pas effectuée dans la base de données. Mon objet Bien a toujours les mêmes attributs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 public function modifier(Bien $bien) { $req = $this->bdd->prepare('UPDATE biens SET type = :type, date_modif = :date_modif, description = :description, code_postal = :code_postal, ville = :ville, voie = :voie, superficie = :superficie, montant = :montant WHERE id = :id'); $req->bindValue(':type',$bien->getType(),PDO::PARAM_STR); $req->bindValue(':date_modif',date('Y-m-d'),PDO::PARAM_STR); $req->bindValue(':description',$bien->getDescription(),PDO::PARAM_STR); $req->bindValue(':code_postal',$bien->getCode_postal(),PDO::PARAM_INT); $req->bindValue(':ville',$bien->getVille(),PDO::PARAM_STR); $req->bindValue(':voie',$bien->getVoie(),PDO::PARAM_STR); $req->bindValue(':superficie',$bien->getSuperficie(),PDO::PARAM_INT); $req->bindValue(':montant',$bien->getMontant(),PDO::PARAM_INT); $req->bindValue(':id',$bien->getId(),PDO::PARAM_INT); $req->execute(); $req->CloseCursor(); }
Merci de votre aide,
A bientôt !
Partager