Partage
  • Partager sur Facebook
  • Partager sur Twitter

Connexion Base de Donnée

    18 juin 2010 à 0:03:22

    Bonjour,

    Je commence à concevoir un site pour une association. Je connais le HTML CSS et PHP et je voudrais construire une BDD.
    La base est terminée mais je n'arrive pas à me connecter à celle-ci. J'ai suivi méticuleusement le livre issu du célébre Site du Zéro.
    Ca me génère deux erreurs je pense quelles sont lié.


    Notice: Undefined variable: connexion in D:\wamp\www\cliquedecruet\fonction\fonction.php on line 10

    Fatal error: Call to a member function query() on a non-object in D:\wamp\www\cliquedecruet\fonction\fonction.php on line 10

    Je vous donne mon fichier de connexion, en fait j'ai fait une fonction qui affiche les dates de naissance des membres sur la page d'accueil.
    Merci beaucoup de votre aide.

    [code]
    <?php
    //Parametres de configuration
    $PARAM_hote ='localhost'; // nom du serveur mysql
    $PARAM_nom_bd ='ma_base'; // le nom de votre base de données
    $PARAM_port ='3306'; // Le port
    $PARAM_utilisateur ='root'; // login
    $PARAM_mot_passe =''; // mot de passe de l'utilisateur pour se connecter

    // ---------------- FIN DE LA CONFIGURATION ---------------- //

    try
    {
    //connexion à la BDD
    $connexion = new PDO('mysql:host=' . $PARAM_hote . ';port=' . $PARAM_port . ';dbname=' . $PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
    }

    catch(Exception $e)
    {
    //sinon on affiche l'erreur
    echo 'Erreur : ' . $e->getMessage() . '<br />';
    echo 'N° : ' . $e->getCode();
    }
    ?>
    [/code]
    • Partager sur Facebook
    • Partager sur Twitter
      18 juin 2010 à 7:48:28

      Salut !

      T'as variable $connexion, tu l'utilises quelque part dans ton code ??
      • Partager sur Facebook
      • Partager sur Twitter
        18 juin 2010 à 8:45:41

        On dirait que ton erreur vient d'ailleurs et n'est pas produite par le bout de code que tu nous donnes.

        Il faudrait que le code fasse un appel à une fonction d'instance "query" sur un objet non instancié pour obtenir cette erreur...

        De plus tout ton code est catché, si une erreur survenait tu devrais la voir préfixée de "Erreur" et de "N : ".
        • Partager sur Facebook
        • Partager sur Twitter
          18 juin 2010 à 10:41:31

          Bonjour et merci de votre aide.
          Ma variable connexion je l'utilise dans ma fonction que voici....
          et mon fichier fonction.php est include dans ma page index et toutes mes pages sont includes, j'ai bien vérifié alors je ne comprend pas pourquoi ma variable connexion n'est pas défini.
          Merci beaucoup de votre aide.

          [code]
          <?php
          // Affiche bon anniversaire d'un membre sur la page d'accueil
          function anniversaire () {
          $date_jour = date('d');
          $date_mois = date('n');
          $tab_mois = Array ('Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre');
          $mois = $tab_mois [$date_mois -1] ;
          $date = "$date_jour $mois";
          // On récupére tous les utilisateurs avec leurs dates de naissance
          $reponse = $connexion->query("SELECT nom, prenom
          FROM utilisateur
          WHERE naissance
          LIKE '$date %'");
          // On affiche cette variable vide pour ne pas afficher "bon anniversaire " si il n'y a pas de mambre né ce jour là
          $anniversaire ="";
          // Avec cette boucle on liste dans un tableau tous les nom et prénom
          while (list($nom, $prenom) = $reponse->fetch()) {
          // On affiche les anniversaires des membres
          $anniversaire .= " <br/><div id='bon_anniversaire'>".$prenom." ".$nom."</div>";
          }
          return $anniversaire ;
          }
          ?>
          • Partager sur Facebook
          • Partager sur Twitter
            18 juin 2010 à 11:08:17

            Très sommairement...

            Une fonction est un contexte d'exécution à part entière.

            C'est à dire qu'elle contient ses propres variables dont la durée de vie est celle de la fonction.

            L'espace mémoire y est alloué à l'appel de la fonction, puis détruit lorsqu'elle retourne son résultat.

            De même, une fonction n'a pas connaissance des variables du code appelant à moins de lui fournir des paramètres par valeur (dans ce cas il y a copie intégrale de la valeur, c'est à dire que la fonction travaille sur une copie conforme, soit par référence, et dans ce dernier cas, la fonction va travailler sur la variable du programme appelant (la même au même emplacement mémoire)).

            Ainsi, puisque ta fonction anniversaire n'a pas de paramètre, elle n'a pas connaissance de l'objet $connexion instancié dans ton code appelant.
            Et lorsque cette fonction tente d'appeler query(), elle lève une erreur fatale php.

            Pour solutionner cela, 3 solutions:

            1)passer ta variable connexion en paramètre de ta fonction anniversaire, :o
            2)ajouter dans ta fonction GLOBAL $connexion pour dire qu'il s'agit d'une variable php globale, :(
            3)initialiser, ouvrir (et fermer) dans ta fonction ta connexion :) (le mieux)
            • Partager sur Facebook
            • Partager sur Twitter
              18 juin 2010 à 17:49:34

              Bonjour,
              Je veux te dire combien je suis très content de tes explications elles sont très très claires avec ta troisième solution ça fonctionne à merveille.
              Merci beaucoup
              • Partager sur Facebook
              • Partager sur Twitter

              Connexion Base de Donnée

              × 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