1 pièce(s) jointe(s)
Post comment ne fonctionne pas
Bonjour,
Je suis confrontée à un souci lors de l'ajout d'une fonction permettant d'ajouter des commentaires à mon blog.
J'ai un table comment contenant les champs suivants :
Pièce jointe 505954
J'ai ajouté à mon modèle ceci (ma connexion à la BDD est effectuée dans une autre fonction) :
Code:
1 2 3 4 5 6 7 8
| function postComment($postId, $author, $comment)
{
$db = dbConnect();
$comments = $db->prepare('INSERT INTO comment(FK_post, author, content, comment_date, signalement) VALUES(?, ?, ?, NOW()), false');
$affectedLines = $comments->execute(array($postId, $author, $comment));
return $affectedLines;
} |
Côté contrôleur j'ai une fonction addComment :
Code:
1 2 3 4 5 6 7 8 9 10 11
| function addComment($postId, $author, $comment)
{
$affectedLines = postComment($postId, $author, $comment);
if ($affectedLines === false) {
die('Impossible d\'ajouter le commentaire !');
}
else {
header('Location: ./index.php?action=post&id=' . $postId);
}
} |
Mon routeur :
Code:
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
| require('./controleurs/controller.php');
if (isset($_GET['action'])) {
if ($_GET['action'] == 'listPosts') {
listPosts();
}
elseif ($_GET['action'] == 'post') {
if (isset($_GET['id']) && $_GET['id'] > 0) {
post();
}
else {
echo 'Erreur : aucun identifiant de billet envoyé';
}
}
elseif ($_GET['action'] == 'addComment') {
if (isset($_GET['id']) && $_GET['id'] > 0) {
if (!empty($_POST['author']) && !empty($_POST['comment'])) {
addComment($_GET['id'], $_POST['author'], $_POST['comment']);
}
else {
echo 'Erreur : tous les champs ne sont pas remplis !';
}
}
else {
echo 'Erreur : aucun identifiant de billet envoyé';
}
}
}
else {
listPosts();
} |
Et voici le formulaire dans ma vue :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <form action="index.php?action=addComment&id=<?= $post['id'] ?>" method="post">
<div>
<label for="author">Auteur</label>
<br />
<input type="text" id="author" name="author" />
</div>
<div>
<label for="content">Commentaire</label>
<br />
<textarea id="content" name="content"></textarea>
</div>
<div>
<input type="submit" />
</div>
</form> |
Lors de la soumission du formulaire, j'obtiens juste une page blanche.. :roll:
Voilà voilà, si quelqu'un peut m'éclairer :)
Redirection suite à postComment ne fonctionne pas
Bonjour,
Merci pour ton retour.
J'ai donc modifié mon contrôleur où il manquait des éléments.
J'ai donc ceci :
Code:
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
| <?php
require('./controleurs/controller.php');
if (isset($_GET['action'])) {
if ($_GET['action'] == 'listPosts') {
listPosts();
}
elseif ($_GET['action'] == 'post') {
if (isset($_GET['id']) && $_GET['id'] > 0) {
post();
}
else {
echo 'Erreur : aucun identifiant de billet envoyé';
}
}
elseif ($_GET['action'] == 'addComment') {
if (isset($_GET['id']) && ($_GET['id'] > 0)) {
if ((isset($_POST['author'])) && (isset($_POST['content'])) && (!empty($_POST['author'])) && (!empty ($_POST['content']))) {
addComment($_GET['id'], $_POST['author'], $_POST['content']);
}
else {
echo 'Erreur : Tous les champs ne sont pas remplis.';
}
}
else {
echo 'Erreur : aucun identifiant de billet envoyé';
}
}
}
else {
listPosts();
} |
Côté contrôleur :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
<?php
function addComment($postId, $author, $comment)
{
$affectedLines = postComment($postId, $author, $comment);
if ($affectedLines === false) {
echo 'Impossible d\'ajouter le commentaire !';
}
else {
header('Location: index.php?action=post&id=' . $postId);
}
} |
Côté modèle :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
function postComment($postId, $author, $comment)
{
$db = dbConnect();
$author = 5;
$comments = $db->prepare('INSERT INTO comment(FK_post, author, content, comment_date, signalement) VALUES(?, ?, ?, NOW(), false)');
$affectedLines = $comments->execute(array($postId, $author, $comment));
return $affectedLines;
}
function getPosts()
{
$db = dbConnect();
$posts = $db->query('SELECT id, title, content, DATE_FORMAT(date, \'%d/%m/%Y\') AS date FROM article ORDER BY date DESC LIMIT 0, 5');
return $posts;
} |
Côté view :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <form action="index.php?action=addComment&id=<?= $post['id'] ?>" method="post">
<div>
<label for="author">Auteur</label>
<br />
<input type="text" id="author" name="author" />
</div>
<div>
<label for="content">Commentaire</label>
<br />
<textarea id="content" name="content"></textarea>
</div>
<div>
<input type="submit" />
</div>
</form> |
Deux choses, j'ai résolu le problème de post du commentaire, il s'ajoute bien à la liste des commentaires.
Par contre, je n'ai pas de redirection après envoi du commentaire.
Pourtant, j'ai bien demandé la redirection dans mon contrôleur :roll:
(Test possible ici : https://p4-elsap.000webhostapp.com/, sachant qu'il faut entrer 5 en nom d'auteur (je n'ai pas encore créé l'espace log-in, et le nom d'auteur est pour l'instant relié à l'id de mon user enregistré manuellement dans la BDD))