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) :
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
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 template :
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 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
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>
et mon index :
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"?>
Les erreurs qui s'affichent sont les suivantes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <?php require "modele/ArticleModele.php"; require "vue/vueBlog.php";
Notice: Undefined variable: articles 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".Warning: Invalid argument supplied for foreach() in C:\wamp64\www\projetPHP\vue\vueBlog.php on line 8
Une idée serait la bienvenue
Partager