Partage
  • Partager sur Facebook
  • Partager sur Twitter

MVC Programmation orienter Objet

Variable non defini

Sujet résolu
    3 mai 2022 à 0:32:16

    Hello bonjour tout le monde, je suis actuellement le cour Adoptez une architecture MVC en PHP.

    Pour la pratique j'ai en place mon model MVC comme décrit dans le cour.

    Lors de l’exécution je rencontre une erreur mais je ne sais exactement d’où provient l'erreur et pourquoi.

    La fonction dans mon model:

    <?php
    require_once("Manager.php");
    class ModifierCommentaire extends Manager{
        
        public function getData($idcom){
            $db = $this->dbConnect();
            $req = $db->prepare('SELECT id, auteur, commentaire, DATE_FORMAT(date_commentaire, \'%d/%m/%Y a %Hh%imin%ss\') AS date_creation_fr FROM commentaires WHERE id=?');
            $req->execute(array($idcom));
            $updData=$req->fetch();
            return $updData;
        }
    
        
    }

    Mon la fonction au niveau du controleur:

    function getUpdateData($idComm){
        $getDt= new ModifierCommentaire();
        $getDt->getData($idComm);
        require_once("view/frontend/modification.php");
    
    }



    function getUpdateData($idComm){
        $getDt= new ModifierCommentaire();
        $getDt->getData($idComm);
        require_once("view/frontend/modification.php");
    
    }


    La fonction dans mon router:

    <?php
    try{
        // Isertion du fichier controler
    require('controller/frontend.php');
    
    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('Erreur : 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('Erreur : tous les champs ne sont pas remplis !') ;
                }
            }
            else {
               throw new Exception('Erreur : aucun identifiant de billet envoyé');
            }
        }
        
        elseif($_GET["action"]=="com"){
            if(isset($_GET["id"]) && $_GET["id"] > 0 ){
             getUpdateData($_GET["id"]);
    
            }
    
        }
    }
    else {
        listPosts();
    }
    
    }
    catch(Exception $e){
    
        die("Erreur: " .$e->getMessage());
    
    }

    la fonction en question dans mon routeur est:

    elseif($_GET["action"]=="com"){
            if(isset($_GET["id"]) && $_GET["id"] > 0 ){
             getUpdateData($_GET["id"]);
    
            }
    

    Ma vue :

    <?php $title="Mon Blog" ?>
    <?php ob_start(); ?>
    <h1>Mon super Blog</h1>
    <h2>modification Du commentaire</h2>
    <!-- affichage des donnees dans le formulaire pour la modification -->
    <?php
    while($data = $updData->fetch()){
        ?>
        <form action="index.php?action=updCom&amp;id=<?=$data["id"] ?>" method="post">
        <label for="auteur"> Auteur</label>
        <input type="text" name="auteur" id="auteur"value="<?=$dtat["auteur"]; ?>"> <br>
        <br><label for="com">Commentaire</label>
        <textarea name="com" id="com" cols="30" rows="10"><?= $data["commentaire"] ?></textarea> <br>
        <br> <label for="myDate">Date</label>
        <input type="date" name="myDate" id="myDate" value="<?=$data["date_commentaire"];?>">
        <input type="submit" value="Modifier">
        </form>
        <?php
    }
    $updData->closeCursor();
    
    ?>
    
    <?php $content = ob_get_clean(); ?>
    
    <?php require("template.php") ?>
    





    Voici l'erreur:

     

    • Partager sur Facebook
    • Partager sur Twitter
      3 mai 2022 à 4:09:51

      Salut, l'erreur semble assez claire, d'où vient $updData de modification.php ligne 7 :
      while($data = $updData->fetch()){

      Ta fonction :

          public function getData($idcom){
              $db = $this->dbConnect();
              $req = $db->prepare('SELECT id, auteur, commentaire, DATE_FORMAT(date_commentaire, \'%d/%m/%Y a %Hh%imin%ss\') AS date_creation_fr FROM commentaires WHERE id=?');
              $req->execute(array($idcom));
              $updData=$req->fetch();
              return $updData;
          }

      retourne $updData mais il te faut mettre son resultat dans une variable: 

      // $getDt->getData($idComm); -non
      $updtData = $getDt->getData($idComm);
      • Partager sur Facebook
      • Partager sur Twitter
        17 mai 2022 à 16:15:15

        Merci j'ai résolu le problème
        • Partager sur Facebook
        • Partager sur Twitter

        MVC Programmation orienter Objet

        × 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.
        • Editeur
        • Markdown