Bonjour,
Je me heurte à un petit souci que je n'arrive pas à résoudre !
J'ai une BDD :
J'ai créé une classe qui gère notamment la partie billet tel que :
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 /* Testé sous MySQL 5.x */ drop table if exists T_COMMENTAIRE; drop table if exists T_BILLET; create table T_BILLET ( BIL_ID integer primary key auto_increment, BIL_DATE datetime not null, BIL_TITRE varchar(100) not null, BIL_CONTENU varchar(400) not null ) ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_general_ci; create table T_COMMENTAIRE ( COM_ID integer primary key auto_increment, COM_DATE datetime not null, COM_AUTEUR varchar(100) not null, COM_CONTENU varchar(200) not null, BIL_ID integer not null, constraint fk_com_bil foreign key(BIL_ID) references T_BILLET(BIL_ID) ) ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_general_ci; insert into T_BILLET(BIL_DATE, BIL_TITRE, BIL_CONTENU) values (NOW(), 'Premier billet', 'Bonjour monde ! Ceci est le premier billet sur mon blog.'); insert into T_BILLET(BIL_DATE, BIL_TITRE, BIL_CONTENU) values (NOW(), 'Au travail', 'Il faut enrichir ce blog dès maintenant.'); insert into T_COMMENTAIRE(COM_DATE, COM_AUTEUR, COM_CONTENU, BIL_ID) values (NOW(), 'A. Nonyme', 'Bravo pour ce début', 1); insert into T_COMMENTAIRE(COM_DATE, COM_AUTEUR, COM_CONTENU, BIL_ID) values (NOW(), 'Moi', 'Merci ! Je vais continuer sur ma lancée', 1);
Ce billet est géré derrière par un manager et une fonction getBillets :
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
72 <?php class Billet { protected $id; protected $date; protected $titre; protected $contenu; 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 getId() { return $this->id; } public function setId($id) { $this->id = $id; } public function getDate() { return $this->date; } public function setDate($date) { $this->date = $date; } public function getTitre() { return $this->titre; } public function setTitre($string) { $this->titre = $string; return $this; } public function getContenu() { return $this->contenu; } public function setContenu($string) { $this->contenu = $string; return $this; } public function save() { // connect to bdd & save $manager = new billetManager(); $manager->persist($this); return $this; } }
Mon souci, est que mon id semble null. Enfin, dans ma base de données, il est normalement égal à 1 ou 2, vu que c'est le nombre de billets qui sont intégré à la table, mais sur ma page web, rien n'est retourné...
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 public function getBillets() { $bdd = $this->bdd; $query = "SELECT * FROM T_BILLET"; $req = $bdd->prepare($query); $req->execute(); while ($row = $req->fetch(PDO::FETCH_ASSOC)) { // instance of a billet object $billet = new Billet(); // hydrate manualy from bdd datas $billet->hydrate($row); // now you have an array of object (instead of an array of array) $billets[] = $billet; }; if(isset($id)) { return $billets; } }
Je ne sais plus trop quoi faire, si qqun a une idée ?..
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 <?php include_once('_config.php'); $multiBillet = new billetManager; $billets = $multiBillet->getBillets(); include_once(PARTIAL . '_head.php'); include_once(PARTIAL . '_nav.php'); ?> <div id="contenu"> <?php if (is_array($billets)) foreach ($billets as $billet): ?> <article> <h1 class="numeroBillet">Extrait de l'Episode <?php echo $billet->getId(); ?></h1> <header> <a href="<?= "index.php?action=billet&id=" . $billet->getId(); ?>"> <h1 class="titreBillet"><?php echo $billet->getTitre(); ?></h1> </a> <time><?php echo $billet->getDate(); ?></time> </header> <p><?php echo $billet->getContenu(); ?></p> </article> <hr /> }
Merci d'avance !
Partager