Modèle Vue Controle php problème affichage
Résolu
ANTHURIUMRE
-
ANTHURIUMRE -
ANTHURIUMRE -
Bonjour,
Bien qu'ayant déjà posé ma question par ailleurs sans que d'aucuns ne parviennent à m'aider, je réitère ici ma demande dans l'espoir que quelq'un daigne me venir en aide en le remerciant par avance car je tourne en rond.
Je veux créer un blog en php mais selon la nomenclature Modèle, Vue, Contrôleur (MVC). Lorsque que je teste mon site avec easyphp avec mon contrôleur global blog.php aucun billets ne s'ffiche si ce n'est le titre de mon blog.
L'arborescence de mon site est le suivant
a la racine www j'ai blog.php qui est mon contrôleur global
puis j'ai trois répertoires a savoir :
- Répertoire modele qui contient un répertoire blog qui contient :
le ficher get_billet.php
le fichier connexion_sql.php
- Répertoire vue qui contient un répertoire blog qui contient :
un fichier index.php
le fichier style.css
- Répertoire controleur qui contient un répertoire blog qui contient :
un fichier index.php
Pour voir s'il n'y a pas un problème par ailleurs je suis allé dans mon répertoire controleur et ai cliqué sur blog contenant un index.php qui me donne ce message d'erreur :
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
Puis j'ai cliqué dans mon répertoire vue sur blog qui contient lui aussi un index.php et j'obtiens ce message d'erreur :
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
Voici les scripts de mes fichiers :
A racine WWW/
Script fichier blog.php
REPERTOIRE MODELE/BLOG/
script fichier get_billets.php
script fichier connexion_sql.php
REPERTOIRE VUE/BLOG/
script fichier index.php
REPERTOIRE CONTROLEUR/BLOG/
script fichier index.php
Si une âme charitable pouvait m'aider a résoudre le problème ce serait formidable. Attention je ne suis pas un as en programmation. Ces scripts relèvent d'un livre que j'ai acheté pour comprenre le php et correspond à un site célèbre que ne ne citerai pas ici pour éviter toute publicité. Merci beaucoup pour votre aide.
Bien qu'ayant déjà posé ma question par ailleurs sans que d'aucuns ne parviennent à m'aider, je réitère ici ma demande dans l'espoir que quelq'un daigne me venir en aide en le remerciant par avance car je tourne en rond.
Je veux créer un blog en php mais selon la nomenclature Modèle, Vue, Contrôleur (MVC). Lorsque que je teste mon site avec easyphp avec mon contrôleur global blog.php aucun billets ne s'ffiche si ce n'est le titre de mon blog.
L'arborescence de mon site est le suivant
a la racine www j'ai blog.php qui est mon contrôleur global
puis j'ai trois répertoires a savoir :
- Répertoire modele qui contient un répertoire blog qui contient :
le ficher get_billet.php
le fichier connexion_sql.php
- Répertoire vue qui contient un répertoire blog qui contient :
un fichier index.php
le fichier style.css
- Répertoire controleur qui contient un répertoire blog qui contient :
un fichier index.php
Pour voir s'il n'y a pas un problème par ailleurs je suis allé dans mon répertoire controleur et ai cliqué sur blog contenant un index.php qui me donne ce message d'erreur :
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
Puis j'ai cliqué dans mon répertoire vue sur blog qui contient lui aussi un index.php et j'obtiens ce message d'erreur :
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
Voici les scripts de mes fichiers :
A racine WWW/
Script fichier blog.php
<?php include_once('modele/blog/connexion_sql.php'); if(!isset($_GET['section']) or $_GET['section']=='index') { include_once('controleur/blog/index.php'); }
REPERTOIRE MODELE/BLOG/
script fichier get_billets.php
<?php function get_billets($offset,$limit) { global $bdd; $offset=(int)$offset; $limit=(int)$limit; $req=$bdd->prepare('SELECT id, titre, contenu, 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; }
script fichier connexion_sql.php
<?php //connexion à la base de donnée try { $bdd= new PDO('mysql:host=localhost;dbname=news','root',''); } catch(Exception $e) { die('Erreur:'.$e->getMessage()); } ?>
REPERTOIRE VUE/BLOG/
script fichier index.php
<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>Titre</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>Titre</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>
REPERTOIRE CONTROLEUR/BLOG/
script fichier index.php
<?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']=nl2br(htmlspecialchars($billet['contenu'])); } //On affiche la page (vue) include_once('vue/blog/index.php');
Si une âme charitable pouvait m'aider a résoudre le problème ce serait formidable. Attention je ne suis pas un as en programmation. Ces scripts relèvent d'un livre que j'ai acheté pour comprenre le php et correspond à un site célèbre que ne ne citerai pas ici pour éviter toute publicité. Merci beaucoup pour votre aide.
A voir également:
- Modèle Vue Controle php problème affichage
- Vue satellite en direct gratuit de ma maison - Guide
- Modèle organigramme word - Guide
- Vue de profil instagram - Guide
- Affichage double ecran - Guide
- Iphone dernier modèle - Guide
2 réponses
Si ça vient du site du zéro comme je le pense, va voir sur leur forum, ils te donneront surement une réponse claire et concise, maintenant pour ma part, ce que je trouve bizarre, ce sont tes includes : dans le dernier fichier que tu décris, tu as
include_once('modele/blog/get_billets.php');
Donc tu appelle un fichier qui se trouve à ./controleur/blog/modele/blog/ : je trouve ta hiérarchie bizarre...
include_once('modele/blog/get_billets.php');
Donc tu appelle un fichier qui se trouve à ./controleur/blog/modele/blog/ : je trouve ta hiérarchie bizarre...
C'est www/blog.php qui doit être consulté par le Web, tous les autres fichiers PHP (Modele,Controlleur,Vue) n'ont pas à l'être.
Il s'agirait là du "Front Controller", dont le rôle est de traiter la demande, et la transmettre au contrôleur spécialisé.
Il s'agirait là du "Front Controller", dont le rôle est de traiter la demande, et la transmettre au contrôleur spécialisé.
Bonjour Arctara et A.Nonymous,
Arctara tu dis "Si ça vient du site du XXXX comme je le pense, va voir sur leur forum, ils te donneront surement une réponse claire et concise, maintenant pour ma part, ce que je trouve bizarre, ce sont tes includes : dans le dernier fichier que tu décris, tu as
include_once('modele/blog/get_billets.php');
Donc tu appelle un fichier qui se trouve à ./controleur/blog/modele/blog/ : je trouve ta hiérarchie bizarre...
C'est la première chose qu j'ai faite. Mais rien n'y fait, les réponses apportées n'aboutissent pas. D'autre part, le livre relève d'un spécialiste aussi me suis-je appliqué à reprendre à la lettre ce qui est écrit. Bien entendu avant de le faire en MVC je l'ai fait selon la méthode intuitive décrit dans les précédents chapitre et cela fonctionnait. les includes correspondent donc exactement à ce que le spécialiste énonce dans ses exemples. Merci quand même pour l'intérêt porté à mon problème.
A.Nonymous je suis conscient que c'est blog.php qui doit être consulté. Mais mis à part le titre de mon blog il n'affiche pas les billets que j'ai dans ma bases de données sur eaysyphp/msql
C'est bien pour ça que j'ai voulu regarder /vue/blog et /controleur/blog qui m'affichent les erreurs mentionnées dans mon premier post. Merci pour l'intérêt accordé à mon problème.
Arctara tu dis "Si ça vient du site du XXXX comme je le pense, va voir sur leur forum, ils te donneront surement une réponse claire et concise, maintenant pour ma part, ce que je trouve bizarre, ce sont tes includes : dans le dernier fichier que tu décris, tu as
include_once('modele/blog/get_billets.php');
Donc tu appelle un fichier qui se trouve à ./controleur/blog/modele/blog/ : je trouve ta hiérarchie bizarre...
C'est la première chose qu j'ai faite. Mais rien n'y fait, les réponses apportées n'aboutissent pas. D'autre part, le livre relève d'un spécialiste aussi me suis-je appliqué à reprendre à la lettre ce qui est écrit. Bien entendu avant de le faire en MVC je l'ai fait selon la méthode intuitive décrit dans les précédents chapitre et cela fonctionnait. les includes correspondent donc exactement à ce que le spécialiste énonce dans ses exemples. Merci quand même pour l'intérêt porté à mon problème.
A.Nonymous je suis conscient que c'est blog.php qui doit être consulté. Mais mis à part le titre de mon blog il n'affiche pas les billets que j'ai dans ma bases de données sur eaysyphp/msql
C'est bien pour ça que j'ai voulu regarder /vue/blog et /controleur/blog qui m'affichent les erreurs mentionnées dans mon premier post. Merci pour l'intérêt accordé à mon problème.