Bonjour,

j'aimerais pouvoir modifier un article que j'ai créé en PHP mais ça ne fonctionne pas. j'aimerais comprendre mon erreur, je vous montre le code :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
 <a href="index.php?action=edit&amp;id=<?= $post['id'] ?>">Modifier</a>
La vue où je modifie l'article (UpdateView.php) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
<h3>Modifiez un billet existant à l'aide des champs ci-dessous :</h3>
 
         <form action="index.php?action=listPosts&amp;id=<?= $post['id']?>" method="POST">
             <p><label for="title">Titre :</label><input type="text" name="newtitle" value="<?= $post['title']?>"></p>
             <p><label for="content">Saisissez l'article modifié :</label><textarea name=" newcontent" ><?= $post['content']?></textarea></p>
             <p><input type="submit"></p>
         </form>

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
17
18
19
 
 
//Récupération du post que l'on veut modifier
function getEditPost() {
    $db = dbConnect();
    $req = $db->prepare('SELECT * FROM posts WHERE id = ?');
    $req->execute(array($id));
    $post = $req->fetch();
    return $post;
}
 
 
//Modifier le post
function getUpdatePost($id) {
    $db = dbConnect();
    $update = $db->prepare('UPDATE posts SET title = ?, content = ? WHERE id = ?');
    $update->execute(array($_POST['newtitle'], $_POST['newcontent'], $id));
    return $update;
}


Controller :

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
20
21
22
 
 
function editPost() {
    $post = getEditPost();
    if ($post === false) {
        print "Impossible d'accéder à la page demandé";
    }else {
        require('View/frontend/UpdateView.php');
    }
}
 
function updatePost($id) {
    if(isset($_POST['title']) && isset($_POST['content'])) {
        if(!empty($_POST['title'])&& !empty($_POST['content'])) {
            $update = getUpdatePost($id);
        }else {
            print "Tout les champs ne sont pas remplis !";
        }
    } else {
        print "Les champs n'existent pas !";
    }    
}


et enfin le routeur (l'index) :

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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//Afficher les posts
if (isset($_GET['action'])) {
    if ($_GET['action'] == 'listPosts') {
        listPosts();
 
        if(isset($_POST['title']) && isset($_POST['content'])) {
            if(!empty($_POST['title']) && !empty($_POST['content'])) {
                updatePost($_GET['id']);   
            }else {
                print "Les champs sont pas remplis !";
            }
        } 
 
    //Afficher le post et ses commentaires
    } elseif ($_GET['action'] == 'post') {
        if (isset($_GET['id']) && $_GET['id'] > 0) {
            post();   
        } else {
            echo 'Erreur : aucun identifiant de billet envoyé';
        }
   // Affiche la vue UpdateView.php
    } elseif ($_GET['action'] == 'edit') {
        if (isset($_GET['id']) && $_GET['id'] > 0) {
            editPost();
        }
    }else {
        print "Les champs title et content n'existent pas !";
    }
} 
 
else {
    listPosts();
}
J'accède bien à UpdateView.php pour pouvoir modifier l'article mais quand j'envoie il n'y a aucune modification. Merci pour votre aide