Bonjour à tous,

je suis en train de créer mon 1er programme orienté objet et je rencontre mon 1er soucis. Pour le moment je voulais m'assurer que mes articles seraient affichés; j'ai donc mis de côté la partie contrôleur pour directement appeler depuis mon index. La partie contrôleur sera créée après m'être assuré que ma vue fonctionne. J'ai donc codé comme ceci :
Partie modèle (1) :
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
 
<?php abstract class Modele{
 
  private $bdd;
 
    protected function executeRequest($data, $param = null) {
        if ($param ==null){
            $result= $this->getBdd()->query($data);
        }
    }
 
    private function getBdd(){
        if ($this->bdd == null) {
        $this->bdd= new PDO("mysql:host=localhost;dbname=blog_jf;charset=utf8",'root',"", array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
        }
        return $this->bdd;
    }
 
}
Partie modèle (2) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
<?php require "Modele.php";?>
 
<?php class ArticleModele extends Modele{
 
    public function getArticles(){
       $sql="SELECT content, date_article,title FROM article";
       $articles= $this->executeRequest($sql);
       return $articles;
    }
}
Partie template :
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
 
<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link href="style.css" rel="stylesheet">
    <title><?= $title ?></title>
</head>
<body class="<?= $body ?>">
    <header>
        <nav>
            <div class="logo"><img src="lib/images/logo.png"/></div>
            <ul>
                <li class="hamburger"></li>
                <li><a href="#">Accueil</a></li>
                <li><a href="#">A propos de l'auteur</a></li>
                <li><a href="#">Blog</a></li>
                <li><a href="#">Contact</a></li>
            </ul>
        </nav> 
        <div class="bg"></div>            
    </header>
    <section>
        <article>
            <?= $content ?>
        </article>
    </section>
    <footer>
    <p>2019 - Jean Forteroche</p>
    </footer>
    <script src="lib/js/main.js"></script>
</body>
</html>
Partie vueBlog :
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
 
<?php $title="Blog"?>
<?php $body ="about"?>
 
 
<?php ob_start()?>
<article>
    <div class="box-content">
    <?php foreach ($articles as $article): ?>
        <?= "<h1>" . $article["title"] . "</h1>"?>
        <p> <?= $article["content"]?></p>
    </div>
    <p> <?= $article["date_article"]?></p>
</article>
<?php endforeach ?>
 
<?php $content= ob_get_clean()?>
 
<?php require "template.php"?>
et mon index :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
<?php
require "modele/ArticleModele.php";
require "vue/vueBlog.php";
Les erreurs qui s'affichent sont les suivantes :
Notice: Undefined variable: articles in C:\wamp64\www\projetPHP\vue\vueBlog.php on line 8
Warning: Invalid argument supplied for foreach() in C:\wamp64\www\projetPHP\vue\vueBlog.php on line 8
Ça fait un moment que je suis dessus et je ne sais vraiment pas pourquoi j'ai un "undefined variable".

Une idée serait la bienvenue