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" :
La partie du contrôleur associée à l'édition de l'article :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 fonction du PostManager (modèle) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } }
Et enfin, la partie du bloc try-catch du code du routeur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
L'erreur renvoyée étant que la variable $post de ma vue n'est pas définie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 !'); } }
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 !![]()
Partager