Bonjour!
Je m'exerce sur l'architecture MVC en PHP et j'ai un petit soucis de variables...
Cela fait plusieurs jours que je bute sur ce problème sans trouver de solution...
J'ai beau arpenter les forums et autres articles, je ne trouve rien.
En gros, je ne comprends pas pourquoi les variables $post et $comments ne sont pas reconnues dans postView.php.
Voici mes codes:
index.php:
post.php:
model.php:
indexView.php:
postView.php:
J'ai vérifié plusieurs fois les fautes que j'aurais pu faire dans les tables de ma BDD mais tout semble bon.
Et sur ma page j'ai ces erreurs qui s'affichent:
Notice: Undefined variable: post in C:\wamp64\www\blog\postView.php on line 14
Idem pour line 15 et 18.
Notice: Undefined variable: comments in C:\wamp64\www\blog\postView.php on line 25
Et ensuite une fatal error pour le fetch() de la ligne 25, liée à $comments.
Si vous avez une idée, je vous en remercie d'avance
Modifié par Stoneteckel (19 Jun 2020 - 10:39)
Je m'exerce sur l'architecture MVC en PHP et j'ai un petit soucis de variables...
Cela fait plusieurs jours que je bute sur ce problème sans trouver de solution...
J'ai beau arpenter les forums et autres articles, je ne trouve rien.
En gros, je ne comprends pas pourquoi les variables $post et $comments ne sont pas reconnues dans postView.php.
Voici mes codes:
index.php:
<?php
require('model.php');
$posts = getPosts();
require('indexView.php');
post.php:
<?php
require('model.php');
if (isset($_GET['id']) && $_GET['id'] > 0)
{
$post = getPost($_GET['id']);
$comments = getComments($_GET['id']);
require('postView.php');
}
else
{
echo 'Error : no post id sent';
}
model.php:
<?php
function getPosts()
{
$db = dbConnect();
$req = $db->query('SELECT id, title, content, DATE_FORMAT(creation_date, \'%d/%m/%Y à %Hh%imin%ss\')
AS creation_date_fr FROM posts ORDER BY creation_date DESC LIMIT 0, 5');
return $req;
}
function getPost($postId)
{
$db = dbConnect();
$req = $db->prepare('SELECT id, title, content, DATE_FORMAT(creation_date, \'%d/%m/%Y à %Hh%imin%ss\')
AS creation_date_fr FROM posts WHERE id = ?');
$req->execute(array($postId));
$post = $req->fetch();
return $post;
}
function getComments($postId)
{
$db = dbConnect();
$comments = $db->prepare('SELECT id, author, comment, DATE_FORMAT(comment_date, \'%d/%m/%Y à %Hh%imin%ss\')
AS comment_date_fr FROM comments WHERE post_id = ? ORDER BY comment_date DESC');
$comments->execute(array($postId));
return $comments;
}
function dbConnect()
{
try
{
$db = new PDO('mysql:host=localhost;port=3308;dbname=blog;charset=utf8', 'root', '#');
return $db;
}
catch(Exception $e)
{
die('Error : ' .$e->getMessage());
}
}
indexView.php:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Mon super blog</title>
</head>
<body>
<h1>Mon super blog</h1>
<p>Derniers billets du blog</p>
<?php
while ($data = $posts->fetch())
{
?>
<div class="news">
<h3>
<?= htmlspecialchars($data['title']); ?>
<em>le <?= $data['creation_date_fr']; ?></em>
</h3>
<p>
<?= nl2br(htmlspecialchars($data['content']));
?>
<br>
<em><a href="postView.php?posts=<?= $data['id']; ?>">Commentaires</a></em>
</p>
</div>
<?php
}
$posts->closeCursor();
?>
</body>
</html>
postView.php:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Mon super blog</title>
</head>
<body>
<h1>Mon super blog!</h1>
<p><a href="index.php">Retour à la liste des billets</a></p>
<div class="news">
<h3>
<?= htmlspecialchars($post['title']) ?>
<em>le <?= $post['creation_date_fr'] ?></em>
</h3>
<p>
<?= nl2br(htmlspecialchars($post['content'])) ?>
</p>
</div>
<h2>Commentaires</h2>
<?php
while ($comment = $comments->fetch())
{
?>
<p><strong><?= htmlspecialchars($comment['author']) ?></strong>
le <?= $comment['comment_date_fr'] ?>
</p>
<p><?= nl2br(htmlspecialchars($comment['comment'])) ?></p>
<?php
}
?>
</body>
</html>
J'ai vérifié plusieurs fois les fautes que j'aurais pu faire dans les tables de ma BDD mais tout semble bon.
Et sur ma page j'ai ces erreurs qui s'affichent:
Notice: Undefined variable: post in C:\wamp64\www\blog\postView.php on line 14
Idem pour line 15 et 18.
Notice: Undefined variable: comments in C:\wamp64\www\blog\postView.php on line 25
Et ensuite une fatal error pour le fetch() de la ligne 25, liée à $comments.
Si vous avez une idée, je vous en remercie d'avance
Modifié par Stoneteckel (19 Jun 2020 - 10:39)