IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Modification de commentaire dans une architecture MVC [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2019
    Messages : 36
    Par défaut Modification de commentaire dans une architecture MVC
    Bonjour,

    Ca fait des jours que j'essaye d'ajouter la possibilité de modifié les commentaires dans un miniblog, tout ça dans une architecture MVC.
    Cependant au submit du formulaire sur le commentaire que je dois modifié une page blanche s'affiche sans erreur, mais si j'enlève un point virgule les erreurs s'affichent bien.
    Les echo 0 et 1 dans mon routeur me sont bien retournés au submit du formlulaire, mais à part ça j'ai toujours ma page blanche et la modification ne se fait pas non plus.

    Mon controller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     function editComment($id, $postId)
    {
        $commentManager = new \TPBLOG\Model\CommentManager();
        $affectedComment = $commentManager->updateComment($id, $postId);
     
        return $affectedComment; 
    }
    Mon model :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     public function updateComment($id, $postId)
        {
            $db = $this->dbConnect();
            $req = $db->prepare('UPDATE comments SET comment = ?, comment_date = NOW() WHERE id = ?');
            $newComment = $req->execute(array($id, $postId));
     
            return $newComment;
        }
    La vue de mon formulaire :

    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
     <?php $title = 'Minibog - Edition commentaire'; ?>
     
    <?php ob_start(); ?>
    <h1>Mon super blog !</h1>
    <p><a href="index.php">Retour à la liste des billets</a></p>
     
    <h2><?php echo 'Commentaire de ' . $comment['author'] . ', le ' . $comment['comment_date']; ?></h2>
     
    <form action="index.php?action=editComment&amp;id=<?= $comment['id'] ?>&amp;postId=<?= $comment['post_id'] ?>" method="post">
     
        <div>
            <label for="author">Auteur</label><br />
            <input type="text" id="author" name="author" value="<?php echo htmlspecialchars($comment['author']); ?>" />
        </div>
        <div>
            <label for="comment">Commentaire</label><br />
            <textarea id="comment" name="comment">
                <?php echo nl2br(htmlspecialchars($comment['comment'])); ?>
            </textarea>
        </div>
        <div>
            <input type="submit" />
        </div>
    </form>
     
    <?php $content = ob_get_clean(); ?>
     
    <?php require('template.php'); ?>
    Le bouton modifier dans la vue d'un post :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <a href="index.php?action=edit&amp;post_id=<?= $post['id'] ?>&amp;comment_id=<?= $comment['id'] ?>">modifier</a> <br><br>
    Mon routeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     elseif ($_GET['action'] == 'editComment') {
                echo "0";
                if (!empty($_GET['id']) && !empty($_GET['postId'])) {
                    echo "1";
                    editComment($_GET['id'], $_GET['postId']);
                } else {
                    throw new Exception('Tous les champs ne sont pas remplis !');
                }
            }
    J'ai mis que les éléments dont je me sers pour modifié le commentaire, pas le code en entier.
    Voila, si vous aviez une piste je suis preneur! Merci d'avance !

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 516
    Par défaut
    Salut,

    ça rentre bien dans le bloc elseif ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    elseif ($_GET['action'] == 'editComment') {...
    parce que le href de ton lien <a> est edit pas editComment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <a href="index.php?action=edit
    et aussi $_GET["id"]et $_GET["postId"]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (!empty($_GET['id']) && !empty($_GET['postId'])) {
    id et postId n'existe pas dans ton href :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    href="index.php?action=edit&amp;post_id=<?= $post['id'] ?>&amp;comment_id=<?= $comment['id'] ?>"

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2019
    Messages : 36
    Par défaut
    Autant pour moi j'ai oublié un elseif de mon Router :

    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
     
     
    elseif ($_GET['action'] == 'edit') {
                if (!empty($_GET['comment_id'])) {
     
                    if (!empty($_GET['comment_id'])) {
     
                        edit($_GET['comment_id']); 
                       }
                    else {
                        throw new Exception('Tous les champs ne sont pas remplis !');
                    }
                }
                else {
                    throw new Exception('Aucun identifiant de billet envoyé');
                }
            }
    dans mon controller j'ai aussi oublié du coup ma fonction edit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    function edit($id)
    {
        $commentManager = new \TPBLOG\Model\CommentManager();
        $comment = $commentManager->getComment($id);
     
        require("view/frontend/editView.php");
     
    }
    et ma méthode getComment dans mon model :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    public function getComment($id)
        {
            $db = $this->dbConnect();
            $comment = $db->prepare('SELECT * FROM comments WHERE id = ?');  // Le point interrogation prend la premiere valeur dans mon tableau de la méthode execute()
            $comment->execute(array($id));
     
            return $comment->fetch();
        }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Structure du Model dans une architecture MVC
    Par Beowulf59 dans le forum ASP.NET MVC
    Réponses: 3
    Dernier message: 01/05/2015, 07h00
  2. Utilisation du pattern Observateur dans la mise en place d'une architecture MVC
    Par Guyiom dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 25/09/2009, 17h14
  3. Menu dans une architecture MVC
    Par kendras dans le forum ASP.NET
    Réponses: 1
    Dernier message: 31/07/2009, 16h52
  4. Réponses: 1
    Dernier message: 28/11/2007, 11h52
  5. Où placer les accesseurs dans une architecture MVC ?
    Par fadeninev dans le forum Zend Framework
    Réponses: 4
    Dernier message: 19/11/2007, 11h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo