Récupération + modification d'un article (MVC)
Bonjour,
Je souhaiterai ajouter une fonction d'édition d'article à mon blog sur le backoffice.
Côté édition sans récupération, j'ai ajouté mon code qui ne me renvoie pas d'erreur mais par contre, la requête ne semble pas fonctionner (mais je vais creuser encore)...
Mon plus gros souci est que je souhaite récupérer le titre et le contenu de l'article sans y parvenir...
Je vous joins mon code, si quelqu'un peut jeter un oeil !
La div d'édition de l'article dans la vue "editarticleview" :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <div class="row" id="newarticle">
<div class="col-md-12">
<h3>Editer l'article article :</h3>
<form action="index.php?action=editArticle" method="post">
<div class="form-group">
<input class="form-control" type="text" name="title" value="<?php echo $post['title']; ?>" placeholder="Titre">
</div>
<div class="form-group">
<textarea rows="2" class="form-control" name="content" id="tinyarea" value="<?php echo $post['content']; ?>" placeholder="Contenu"></textarea>
</div>
<div class="modal-footer ">
<button type="submit" class="btn btn-warning btn-lg" style="width: 100%;"><span class="glyphicon glyphicon-ok-sign"></span>Enregistrer l'article</button>
</div>
</form>
</div>
</div> |
La partie du contrôleur associée à l'édition de l'article :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| function editArticle($title, $content, $id)
{
$postManager = new PostManager();
$post = $postManager->editArticle($title, $content, $id);
$affectedLines = $postManager->editArticle($title, $content, $id);
if ($affectedLines === false) {
// Erreur gérée. Elle sera remontée jusqu'au bloc try du routeur !
throw new Exception('Impossible d\'éditer le billet !');
}
else {
header('Location: /index.php?action=listPostsAdmin');
exit;
}
} |
La fonction du PostManager (modèle) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public function editArticle($title, $content, $id)
{
$db = $this->dbConnect();
$edit = $db->prepare('UPDATE article SET title =?, content =? WHERE id =?');
$edit->execute(array($title, $content, $id ));
return $edit;
$req = $db->prepare('SELECT id, title, content FROM article WHERE id = ?');
$req->execute(array($id));
$post = $req->fetch();
return $post;
} |
Et enfin, la partie du bloc try-catch du code du routeur :
Code:
1 2 3 4 5 6 7 8 9 10
| elseif ($_GET['action'] == 'editArticle') {
if (!empty($_POST['title']) && !empty($_POST['content'])) {
$id = (!empty($_GET['id']))? intval($_GET['id']) : 0;
editArticle($_POST['title'], $_POST['content'], $id);
}
else {
// Autre exception
throw new Exception('Tous les champs ne sont pas remplis !');
}
} |
L'erreur renvoyée étant que la variable $post de ma vue n'est pas définie.
J'ai conscience d'avoir fait une boulette, mais je n'arrive vraiment pas à voir mon erreur, elle me parait définie..
Il y a encore plein de choses qui m'échappent avec PHP, soyez indulgents s'il vous plait :?
Merci d'avance ! :)