MVC modèle vue contrôle erreur affichage
Résolu
ANTHURIUMRE
-
ANTHURIUMRE -
ANTHURIUMRE -
Bonjour,
J'essaie de mettre sur pied un blog en respectant la nomenclature Modèle Vue Contrôle dont vous trouverez les fichier ci-dessous. Mais quand je lance ma Vue le message suivant s'affiche. Pourriez-m'aider s'il vous plaît. Merci.
Notice: Undefined variable: billets in C:\Program Files\EasyPHP-5.3.6.0\www\vue\blog\index.php on line 15
Warning: Invalid argument supplied for foreach() in C:\Program Files\EasyPHP-5.3.6.0\www\vue\blog\index.php on line 15
fichier modèle:
Fichier Vue
Fichier contrôle
J'essaie de mettre sur pied un blog en respectant la nomenclature Modèle Vue Contrôle dont vous trouverez les fichier ci-dessous. Mais quand je lance ma Vue le message suivant s'affiche. Pourriez-m'aider s'il vous plaît. Merci.
Notice: Undefined variable: billets in C:\Program Files\EasyPHP-5.3.6.0\www\vue\blog\index.php on line 15
Warning: Invalid argument supplied for foreach() in C:\Program Files\EasyPHP-5.3.6.0\www\vue\blog\index.php on line 15
fichier modèle:
<?php function get_billets($offset,$limit) { global $bdd; $offset=(int)$offset; $limit=(int)$limit; $req=$bdd->prepare('SELECT id, image, categorie, titre, contenu, auteur, DATE_FORMAT(date_creation,\'%d/%m/%Y à %Hh%imin%ss\') AS date_creation_fr FROM billets ORDER BY date_creation DESC LIMIT :offset,:limit'); $req->bindParam(':offset',$offset, PDO::PARAM_INT); $req->bindParam(':limit',$limit,PDO::PARAM_INT); $req->execute(); $billets=$req->fetchAll(); return $billets; }
Fichier Vue
<DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Strict/EN""http://www.w3.org /TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> <head> <title></title> <meta http-equiv="Content-Type" content="text/html"; charset=iso-8859-1'/> <link href="vue/blog/style.css" rel="stylesheet" type="text/css"/> </head> <body> <h1></h1> <?php foreach($billets as $billet) { ?> <div class="news"> <h3> <?php echo $billet['titre'];?> <em>le <?php echo $billet['date_creation_fr'];?></em> </h3> <p> <?php echo $billet['contenu'];?> <br/> <em><a href="commentaires.php?billet=<?php echo $billet['id'];?>"> Commentaires</a></em> </p> </div> <?php } ?> </body> </html>
Fichier contrôle
<?php //on demande les cinq derniers billets(modèle) include_once('modele/blog/get_billets.php'); $billets=get_billets(0,5); //On effectue du traitement sur les données (contrôleur) //Ici on doit surtout sécuriser l'affichage foreach($billets as $billet) { $billet['titre']=htmlspecialchars($billet['titre']); $billet['contenu']=n12br(htmlspecialchars($billet['contenu'])); } //On affiche la page (vue) include_once('vue/blog/index.php');
A voir également:
- MVC modèle vue contrôle erreur affichage
- Vue satellite en direct gratuit de ma maison - Guide
- Modèle organigramme word - Guide
- Vue de profil instagram - Guide
- Affichage double ecran - Guide
- Windows 11 affichage classique - Guide
3 réponses
Bonjour,
Manifestement vous avez un souci avec get_billets($offset,$limit) qui ne vous renvoie rien, vérifiez avec dump($billets) dans le modèle avant de faire le return.
Manifestement vous avez un souci avec get_billets($offset,$limit) qui ne vous renvoie rien, vérifiez avec dump($billets) dans le modèle avant de faire le return.
Bonjour,
Ben ne cherchez pas plus loin. Votre variable $bdd n'est pas instanciée, puisque vous ne faites pas la connexion SQL.
Ce message Warning: include_once(modele/connexion_sql.php) [function.include-once]: failed to open stream: No such file or directory in C:\Program Files\EasyPHP-5.3.6.0\www\blog.php on line 2
indique que blog.php cherche un fichier C:\Program Files\EasyPHP-5.3.6.0\www\modele\connexion_sql.php et qu'il ne le trouve pas, le fichier existe bien ?
Ben ne cherchez pas plus loin. Votre variable $bdd n'est pas instanciée, puisque vous ne faites pas la connexion SQL.
Ce message Warning: include_once(modele/connexion_sql.php) [function.include-once]: failed to open stream: No such file or directory in C:\Program Files\EasyPHP-5.3.6.0\www\blog.php on line 2
indique que blog.php cherche un fichier C:\Program Files\EasyPHP-5.3.6.0\www\modele\connexion_sql.php et qu'il ne le trouve pas, le fichier existe bien ?
Bonjour à tous et Bonjour neoprog67 et merci pour ton aide,
Il ne le trouvait pas car j'avais commis un oubli dans le chemin il fallai que je mette
\modele/blog/connexion_sql.php
Ceci étant dit aucun billet ne s'affiche si ce n'est le titre de la page de mon blog.
Et quand je vais dans mon répertoire vue/blog qui contient index.php j'ai le message suivant :
Notice: Undefined variable: billets in C:\Program Files\EasyPHP-5.3.6.0\www\vue\blog\index.php on line 15
Warning: Invalid argument supplied for foreach() in C:\Program Files\EasyPHP-5.3.6.0\www\vue\blog\index.php on line 15
et de même quand je vais dans mon répertoire controleur/blog qui contient index.php j'ai le message suivant :
Warning: include_once(modele/blog/get_billets.php) [function.include-once]: failed to open stream: No such file or directory in C:\Program Files\EasyPHP-5.3.6.0\www\controleur\blog\index.php on line 3
Warning: include_once() [function.include]: Failed opening 'modele/blog/get_billets.php' for inclusion (include_path='.;C:\php\pear') in C:\Program Files\EasyPHP-5.3.6.0\www\controleur\blog\index.php on line 3
Fatal error: Call to undefined function get_billets() in C:\Program Files\EasyPHP-5.3.6.0\www\controleur\blog\index.php on line 5
Il ne le trouvait pas car j'avais commis un oubli dans le chemin il fallai que je mette
\modele/blog/connexion_sql.php
Ceci étant dit aucun billet ne s'affiche si ce n'est le titre de la page de mon blog.
Et quand je vais dans mon répertoire vue/blog qui contient index.php j'ai le message suivant :
Notice: Undefined variable: billets in C:\Program Files\EasyPHP-5.3.6.0\www\vue\blog\index.php on line 15
Warning: Invalid argument supplied for foreach() in C:\Program Files\EasyPHP-5.3.6.0\www\vue\blog\index.php on line 15
et de même quand je vais dans mon répertoire controleur/blog qui contient index.php j'ai le message suivant :
Warning: include_once(modele/blog/get_billets.php) [function.include-once]: failed to open stream: No such file or directory in C:\Program Files\EasyPHP-5.3.6.0\www\controleur\blog\index.php on line 3
Warning: include_once() [function.include]: Failed opening 'modele/blog/get_billets.php' for inclusion (include_path='.;C:\php\pear') in C:\Program Files\EasyPHP-5.3.6.0\www\controleur\blog\index.php on line 3
Fatal error: Call to undefined function get_billets() in C:\Program Files\EasyPHP-5.3.6.0\www\controleur\blog\index.php on line 5
J'ai fait ce que vous m'avez dit mais j'ai toujours le message d'erreur. Merci quand même pour la suggestion.
Warning: include_once(modele/connexion_sql.php) [function.include-once]: failed to open stream: No such file or directory in C:\Program Files\EasyPHP-5.3.6.0\www\blog.php on line 2
Warning: include_once() [function.include]: Failed opening 'modele/connexion_sql.php' for inclusion (include_path='.;C:\php\pear') in C:\Program Files\EasyPHP-5.3.6.0\www\blog.php on line 2
Fatal error: Call to a member function prepare() on a non-object in C:\Program Files\EasyPHP-5.3.6.0\www\modele\blog\get_billets.php on line 8
Voici ci-dessous mes deux autres fichiers pour mieux comprendre le foncitonnement de mon blog MVC. Merci pour votre aide.
fichier contrôleur globale blog.php
fichier connexion_squl.php