Bonjour,

Je me heurte à un petit souci que je n'arrive pas à résoudre !

J'ai une BDD :
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);
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
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;
    }
}
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
 
  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;
       }
    }
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
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 />
     }
Je ne sais plus trop quoi faire, si qqun a une idée ?..

Merci d'avance !