Je suis sur le TP Modification des commentaires. Après plusieurs jours dessus, je ne vois plus rien et surtout l'erreur que j'ai dû faire pour que mon dev ne soit pas fonctionnel. J'aurai besoin de votre aide, svp!
Alors voilà! Il faut arriver à faire en sorte que n'importe quel visiteur puisse modifier un commentaire et que celui-ci soit mis à jour en BDD.
Lorsque je clique sur "Modifier", j'arrive bien sur mon formulaire pour pouvoir modifier le commentaire. Par la suite, je valide ma modification et le commentaire n'est pas mis à jour.
Je n'ai pas erreur qui apparaît et je n'ai pas l'impression qu'il y ait un problème de communication avec la BDD.
Ci-dessous mon code (je n'ai pas encore fait la POO) :
- model/frontend.php
<?php
function dbConnect()
{
$db = new PDO('mysql:host=localhost;dbname=blog;charset=utf8', 'root', '');
return $db;
}
function view($commentId) // connexion aux données pour récupérer un commentaire précis
{
$db = dbConnect();
$comment = $db->prepare('SELECT id, comment FROM comments WHERE id = ?');
$comment->execute(array($commentId));
$viewcomment = $comment->fetch();
return $viewcomment;
}
function edit($comment, $commentId) // connexion aux données pour modifier un commentaire
{
$db = dbConnect();
$newcomment= $db->prepare('UPDATE comments SET comment = ? WHERE id=?');
$affectedComment = $newcomment->execute(array($comment, $commentId));
return $affectedComment;
}
- controller/frontend.php
<?php
require('model/frontend.php');
function viewComment() // pour voir le commentaire
{
$viewcomment = view($_GET['id']);
require('view/frontend/editCommentView.php');
}
function editComment($postId, $commentId, $comment) // pour éditer le commentaire à modifier
{
$affectedComment = edit($commentId, $comment);
if ($affectedComment === false) {
throw new Exception('Impossible de modifier le commmentaire');
}
else {
header('Location: index.php?action=post&id=' . $_GET['postId']);
}
}
- index.php
<?php
require('controller/frontend.php');
try {
if (isset($_GET['action'])) {
if ($_GET['action'] == 'listPosts') {
listPosts();
}
elseif ($_GET['action'] == 'post') {
if (isset($_GET['id']) && $_GET['id'] > 0) {
post();
}
else {
throw new Exception('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 {
throw new Exception('Tous les champs ne sont pas remplis !');
}
}
else {
throw new Exception('Aucun identifiant de billet envoyé');
}
}
elseif ($_GET['action'] == 'viewComment') {
if (isset($_GET['id']) && $_GET['id'] > 0) {
viewComment();
}
else {
throw new Exception('Tous les champs ne sont pas remplis !');
}
}
elseif ($_GET['action'] == 'editComment') {
if (isset($_GET['id']) && $_GET['id'] > 0 && isset($_GET['postId']) && $_GET['postId'] > 0) {
if (!empty($_POST['comment'])) {
editComment($_GET['id'], $_GET['postId'], $_POST['comment']);
}
else {
throw new Exception('Tous les champs ne sont pas remplis !');
}
}
else {
throw new Exception('Aucun identifiant de billet envoyé');
}
}
}
else {
listPosts();
}
}
catch(Exception $e) {
$errorMessage = $e->getMessage();
require('view/errorView.php');
}
Personnellement je n'ai pas mis index.php sur le lien menant vers formulaire de modification sur postView.php.
J'ai mis le nom de mon formulaire de modification qui me mène à ma page de modification et cela fonctionne.
- Edité par Max Imus 26 mai 2018 à 20:49:10
TP MVC en PHP
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.