Partage
  • Partager sur Facebook
  • Partager sur Twitter

Cours MVC Notice Undefined variable: bdd in...

Erreur lors de l'affichage de news cours sur le mvc

Sujet résolu
    22 juillet 2018 à 0:08:20

    Bonjour je suis actuellement le cour sur le MVC et je commence a peine et lors de l'appel de la page news.php via l'index.php?page=news j'obtiens un message d'érreur: Notice: Undefined variable: bdd in ...

    Voici l'index.php modifié au gout du jour.

    <?php
    //On démarre la session
    session_start();
     
    //On se connecte à MySQL
    include_once('connexion_bdd.php');
    /* 
    mysql_connect('localhost', 'root', '');
    mysql_select_db('mvc_tests');
     */
    
    //On inclut le logo du site et le menu
    /*
    include ('vues/logo.php');
    include ('vues/menu.php');
     */
    
    //On inclut le contrôleur s'il existe et s'il est spécifié
    if (!empty($_GET['page']) && is_file('controleurs/'.$_GET['page'].'.php'))
    {
            include 'controleurs/'.$_GET['page'].'.php';
    }
    else
    {
            include 'controleurs/accueil.php';
    }
     
    //On inclut le pied de page
    //include ('vues/pied.php');
     
    //On ferme la connexion à MySQL
    //mysql_close();
    $bdd->closeCursor();


    connexion_bdd.php

    <!-- Connexion a la bdd. -->
    			<?php
    			try
    			{
    				// On se connecte à MySQL
    			$bdd = new PDO('mysql:host=localhost;dbname=mvc_tests;charset=utf8', 'root', '', 
    			array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    			}
    			catch (Exception $e)
    			{
    				// En cas d'erreur, on affiche un message et on arrête tout
    				die('Erreur : ' . $e->getMessage());
    				// Si tout va bien, on peut continuer
    			}


    controleurs/news.php

    <?php
    /* C'est en tout début de fichier que l'on vérifie les autorisations. Les 
    news sont visibles par tous, mais si vous voulez en restreindre l'accès, c'est 
    ici que cela se passe. */
     
    //On inclut le modèle
    include(dirname(__FILE__).'/../modeles/news.php');
     
    /* On effectue ici diverses actions, comme supprimer des news, par exemple. 
    Il n'y en aura aucune dans ce tutoriel pour rester simple, mais libre à vous d'en rajouter. */
     
    //On récupère les news
    $news = recuperer_news();
     
    //On inclut la vue
    include(dirname(__FILE__).'/../vues/news.php');
    ?>

    modeles/news.php c'est ici que provient l'érreur a la ligne 6

    <?php
    function recuperer_news()
    {
    	$news = array();
    
    	$req = $bdd->query('SELECT id, auteur, titre, DATE_FORMAT(date, \'%d/%m/%Y %H\') AS date_formatee, contenu FROM news ORDER BY date DESC');
    	while ($data = $req->fetch())
    	{
    		$news[] = $data;
    	}
    	return $news;
    }
    ?>

    et la vues/news.php

    <h1>Les news du site</h1>
     
    <?php
    foreach($news as $n)
    {
            echo '
            <div class="news">
                    <h2>'.$n['titre'].'</h2>
                    <p>News postée le '.str_replace(' ', ' à ', $n['date_formatee']).' par '.$n['auteur'].'</p>
                    <p>'.$n['contenu'].'</p>
            </div>';
    }
    ?>
    

    Merci de votre aide d'avance.

    Bouxi



    • Partager sur Facebook
    • Partager sur Twitter
      22 juillet 2018 à 0:17:50

      hello,

      tu dois passer $bdd en paramètre à ta fonction .

      Puis-je savoir quel tuto tu suis? je trouve ton code un peu spécial quand même pour du MVC

      -
      Edité par Caroline B. 22 juillet 2018 à 0:18:47

      • Partager sur Facebook
      • Partager sur Twitter
      Google répond à tout, PHP Manual sait (presque) tout, StackOverflow envisage tout !
        22 juillet 2018 à 0:26:30

        Merci sa a résolu mon souci. 

        Par contre lors de: 

        <?php
        $bdd->closeCursor();

        Sa cause une érreur c'est normal?

        Voici le lien du cours: https://openclassrooms.com/fr/courses/1153831-adopter-un-style-de-programmation-clair-avec-le-modele-mvc

        • Partager sur Facebook
        • Partager sur Twitter
          22 juillet 2018 à 0:30:54

          quelle erreur ?

          ps : merci pour le lien, je comprends mieux pourquoi c'est fait comme ça :p 

          -
          Edité par Caroline B. 22 juillet 2018 à 0:32:13

          • Partager sur Facebook
          • Partager sur Twitter
          Google répond à tout, PHP Manual sait (presque) tout, StackOverflow envisage tout !
            22 juillet 2018 à 0:37:01

            De rien merci a vous de prendre le temps de m'aider.

            L'érreur est : Fatal error Uncaught Error: Call to undefined method PDO::closeCursor() in...

            • Partager sur Facebook
            • Partager sur Twitter
              22 juillet 2018 à 0:44:10

              heuuuu j'avoue ne pas comprendre :( c'est bien la ligne 33 de l'index.php qui est visée dans le message d'erreur ? (copie colle toujours tout ^^)

              EDIT : je px voir la modif que tu as faite ? 

              -
              Edité par Caroline B. 22 juillet 2018 à 0:44:56

              • Partager sur Facebook
              • Partager sur Twitter
              Google répond à tout, PHP Manual sait (presque) tout, StackOverflow envisage tout !
                22 juillet 2018 à 1:43:26

                je peux voir ta modif s'il te plait ?
                • Partager sur Facebook
                • Partager sur Twitter
                Google répond à tout, PHP Manual sait (presque) tout, StackOverflow envisage tout !
                  22 juillet 2018 à 1:48:07

                  <?php
                  //On démarre la session
                  session_start();
                   
                  //On se connecte à MySQL
                  include_once('connexion_bdd.php');
                  /* 
                  mysql_connect('localhost', 'root', '');
                  mysql_select_db('mvc_tests');
                   */
                  
                  //On inclut le logo du site et le menu
                  /*
                  include ('vues/logo.php');
                  include ('vues/menu.php');
                   */
                  
                  //On inclut le contrôleur s'il existe et s'il est spécifié
                  if (!empty($_GET['page']) && is_file('controleurs/'.$_GET['page'].'.php'))
                  {
                          include 'controleurs/'.$_GET['page'].'.php';
                  }
                  else
                  {
                          include 'controleurs/accueil.php';
                  }
                   
                  //On inclut le pied de page
                  //include ('vues/pied.php');
                   
                  //On ferme la connexion à MySQL
                  //mysql_close();
                  // $bdd->closeCursor();
                  • Partager sur Facebook
                  • Partager sur Twitter
                    22 juillet 2018 à 1:52:35

                    ???

                    je demandais à voir la modification suite à ta première question (poru voir comment tu as passé la $bdd en variable), là tu a juste mis le closeCursor en commentaire lol

                    ps : si ça fonctionne correctement quand il est en commentaire, enlève le tout simplement. Il n'est pas toujours 'obligatoire' (voir doc pour plus de précision)

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Google répond à tout, PHP Manual sait (presque) tout, StackOverflow envisage tout !
                      22 juillet 2018 à 18:58:34

                      Ha d'accord autant pour moi

                      voici la page controleurs/news.php

                      <?php
                      /* C'est en tout début de fichier que l'on vérifie les autorisations. Les 
                      news sont visibles par tous, mais si vous voulez en restreindre l'accès, c'est 
                      ici que cela se passe. */
                       
                      //On inclut le modèle
                      include(dirname(__FILE__).'/../modeles/news.php');
                       
                      /* On effectue ici diverses actions, comme supprimer des news, par exemple. 
                      Il n'y en aura aucune dans ce tutoriel pour rester simple, mais libre à vous d'en rajouter. */
                       
                      //On récupère les news
                      $news = recuperer_news($bdd);
                       
                      //On inclut la vue
                      include(dirname(__FILE__).'/../vues/news.php');
                      ?>

                      et le modele: modeles/news.php

                      <?php
                      function recuperer_news($bdd)
                      {
                      	$news = array();
                      
                      	$req = $bdd->query('SELECT id, auteur, titre, DATE_FORMAT(date, \'%d/%m/%Y %H\') AS date_formatee, contenu FROM news ORDER BY date DESC');
                      	while ($data = $req->fetch())
                      	{
                      		$news[] = $data;
                      	}
                      	return $news;
                      }
                      ?>

                      Simplement. Les autres pages sont comme au départ.


                      • Partager sur Facebook
                      • Partager sur Twitter
                        22 juillet 2018 à 22:09:24

                        sorry je ne vois as d'où vient le probleme :$
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Google répond à tout, PHP Manual sait (presque) tout, StackOverflow envisage tout !
                          24 juillet 2018 à 0:19:21

                          Pas grave merci quand même. Je vais trouvé peu être un jour. 

                          • Partager sur Facebook
                          • Partager sur Twitter

                          Cours MVC Notice Undefined variable: bdd in...

                          × 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