Bonjour,
J'ai un nouveau petit problème concernant mes bases de données et mon code en POO.
En effet, j'ai une première classe manager billetManager, tel que :
Ma bdd est bien configurée, donc jusque là ça devrait être bon.
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 class billetManager extends bddmanager { public function update(Billet $billet) { $bdd = $this->bdd; $query = "UPDATE T_BILLET SET BIL_TITRE = :titre, BIL_CONTENU = :contenu where BIL_ID =" .$bilId; $req = $bdd->prepare($query); $req->bindValue(':titre', $billet->getbilTitre(), PDO::PARAM_STR); $req->bindValue(':contenu', $billet->getbilContenu(), PDO::PARAM_STR); $req->execute(); } public function delete(Billet $billet) { $bdd = $this->bdd; $query ="DELETE FROM T_BILLET where BIL_ID = :bilId"; $req = $bdd->prepare($query); $req->bindValue('bilId', $billet->getbilId(), PDO::PARAM_STR); $req->execute(); } public function create(Billet $billet) { $bdd = $this->bdd; $query ='INSERT INTO T_BILLET (BIL_TITRE, BIL_CONTENU, BIL_DATE) VALUES (:titre, :contenu, NOW())'; $req = $bdd->prepare($query); $req->bindValue(':titre', $billet->getbilTitre(), PDO::PARAM_STR); $req->bindValue(':contenu', $billet->getbilContenu(), PDO::PARAM_STR); $req->execute(); }
Ensuite, j'ai un controleur, qui gère l'appel de la fonction update / delete (la fonction create fonctionne bien !)
Et enfin, j'ai ma vue associée, qui appelle les actions en faisant passer pour chaque champ de ma BDD un $params['nomduchamp'], qui est converti dans mon routeur par un $params = $_POST['params']; puis récupéré dans mon controleur :
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
18
19
20
21
22
23
24
25
26 class modif_billet { public function updateBillet($params){ $newbillet = new Billet(); $newbillet->setbilTitre($params['titre']); $newbillet->setbilContenu($params['contenu']); $em = new billetManager(); $em->update($newbillet); $view = new View; $view->render('Mod_Del'); } public function deleteBillet($params){ $delbillet = new Billet(); $delbillet->setbilId($params['bilId']); $em = new billetManager(); $em->delete($delbillet); $view = new View; $view->render('Mod_Del'); } }
L'idée donc, serait de réussir à updater en fonction de mon id du billet.
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 <?php if(isset($_GET['id'])) { $billet_id = $_GET['id']; $manager = new billetManager(); $billet = $manager->getBilletById($billet_id); } include_once(PARTIAL . '_head.php'); include_once(PARTIAL . '_nav.php'); ?> <?php if(is_array($billet)) foreach ($billet as $billet_unique): ?> <form name="formulaire" id="formulaire" action="index.php?action=updateBillet" method="post"> <label for="texte" ><br><strong>Article à modifier : </strong> <br></label><br /> <label for="titre" ><strong>Titre de l'épisode <?php echo $billet_unique->bilId ?>: <input type = "text" rows="5" class="input" size="50" style="height:25px;" name = "params[titre]" id = "titre" value = "<?php echo $billet_unique->bilTitre ?>"</strong></label> <input id="submit_button" type="submit" value="Supprimer" name = 'params[id]' /> <br /><br /> <textarea id="texte" class="input" name="params[contenu]" rows="25" ><?php echo $billet_unique->bilContenu ?></textarea> <br /> <input id="submit_button" type="submit" value="Modifier" /> </form> <form name="formulaire" id="formulaire" action="index.php?action=deleteBillet" method="post"> <input id="submit_button" type="submit" value="Supprimer" name = 'params[id]' /> </form> <?php var_dump($billet) ?> <?php endforeach ?> <?php include_once(PARTIAL . '_footer.php'); ?>
Je mets aussi la classe Billet pour les setters et getters :
J'ai tenté les var_dump de tous les côtés, c'est comme si ma valeur id n'était déjà même pas récupérée dans mon controlleur, mais je ne vois pas comment faire différemment... Pour le moment, j'ai surtout regardé du coté de l'update, je pense que ce sera la même chose après pour la fonction delete..
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 <?php // Création de la classe Billet / Définition des setters et getters class Billet { public $bilId; public $bilDate; public $bilTitre; public $bilContenu; public function hydrate($donnees) { foreach ($donnees as $attribut => $valeur) { $methode = 'set'.str_replace(' ', '', ucwords(str_replace('_', ' ', $attribut))); if (is_callable(array($this, $methode))) { $this->$methode($valeur); } } } public function getbilId() { return $this->bilId; } public function setbilId($bilId) { $this->bilId = $bilId; } public function getbilDate() { return $this->bilDate; } public function setbilDate($bilDate) { $this->bilDate = $bilDate; } public function getbilTitre() { return $this->bilTitre; } public function setbilTitre($bilTitre) { $this->bilTitre = $bilTitre; } public function getbilContenu() { return $this->bilContenu; } public function setbilContenu($bilContenu) { $this->bilContenu = $bilContenu; } public function save() { // connect to bdd & save $manager = new billetManager(); $manager->persist($this); return $this; } }
Merci d'avance pour vos suggestions si vous en avez![]()
Partager