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

Langage PHP Discussion :

Problème d'include, et ouverture de connexion MySQL


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut Problème d'include, et ouverture de connexion MySQL
    Bonjour,

    Voilà, j'ai un problème avec un include, je vais tâcher d'être clair.

    J'appelle dans toutes mes pages un fichier en include, qui lui en appelle 4.

    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
    <?php
     
    session_start();
     
    require('./inc/identifiants_bdd.php');
     
    require('./inc/class_sql.inc.php');
     
    //démarrage de la connexion
    $db = new connexion($host, $user, $pass, $base);
     
    require('./inc/bibliotheque.php');
     
    require('./inc/structure.php');
     
    ?>
    Mon problème se situe dans mon fichier bibliotheque(fonctions) et structure(fonctions de structure de la page).

    J'ai besoin de faire des requêtes dans certaines de mes fonctions, seulement php réagit comme si la connexion n'a pas été déclarée.

    Exemple dans structure.php, j'ai une fonction qui me permet d'afficher un petit menu horizontal, et dans celle-ci, j'ai une requête pour vérifier si l'utilsateur a de nouveaux mp.

    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
    function menu()
    {
        if( !isset($_SESSION['user']) )
        {
            $connect = '<li class="mhd"><a href="membre-connexion.php">Connexion</a></li>';
        }
        else
        {
            $connect = '<li class="mhd"><a href="membre-deconnexion.php">déconnexion</a></li>';
            $connect .= '<li class="mhd"><a href="membre-options.php">' . $_SESSION['user']['name'] . '</a></li>';
            // sélection des mp non-lus
            $sql = 'SELECT COUNT(*) FROM mp_lecture WHERE user_id=' .$_SESSION['user']['id'];
            $nb = $db -> req($sql, RESULT);
     
            $connect .= '<li class="mhd"><a href="membre-mp.php">' . $nb . ' messages</a></li>';
        }
     
        // etc..........
    Seulement voilà, j'ai un : Fatal error: Call to a member function req() on a non-object

    Je ne comprends pas trop, je fais bien appel à ma classe sql, et donc la connexion est bien ouverte.

    Si j'utilise cette requête dans une page appelante, ça fonctionne très bien

    Pourquoi php réagit de cette façon ?
    Comment remédier au problème ?

  2. #2
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    a l'interieur de la fonction... ou alors tu passe $db en parametre

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Merci, ça fonctionne, j'aime pas trop utiliser les global, mais je crois que j'ai pas d'autres choix.

    N'empêche, j'ai toujours pas compris pourquoi j'ai cette erreur qui pour moi ne devrait pas être...

    Merci

  4. #4
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    $db est une variable comme une autre, donc a l'interieur de la fonction, comme elle n'est pas déclarée, elle n'est pas connue. Tu peux faire autant d'include que tu veux ailleurs, ca résoud pas le probleme...

    Donc pour y acceder tu n'a que l'option de la variable globale... ou de la mise en parametre a l'appel de la fonction.

    Ou alors une classe singleton Factory qui y donnerait acces ;o)

  5. #5
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Ah oui, ça y est, j'ai compris, j'avais oublié ce détail

    Ou alors une classe singleton Factory qui y donnerait acces ;o)
    A 1ère vue, trop compliqué pour mon niveau actuel, peut-être dans 10 ans

    Merci

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

Discussions similaires

  1. [OLEANE] Problème de connexion MySQL
    Par Tocraz dans le forum Autres hébergeurs
    Réponses: 3
    Dernier message: 14/06/2006, 09h47
  2. Problème connexion mysql
    Par Squyrrel dans le forum SGBD
    Réponses: 6
    Dernier message: 16/05/2006, 18h35
  3. [dreamweaver] problème de connexion Mysql avec dreamweaver
    Par goma771 dans le forum Dreamweaver
    Réponses: 4
    Dernier message: 30/01/2006, 14h14
  4. problème innatendu de connexion mysql
    Par gilles74 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 01/11/2005, 18h45
  5. [connexion Mysql] problème de connexion avec l'odbc
    Par DarkAngelus dans le forum Administration
    Réponses: 2
    Dernier message: 13/10/2005, 11h24

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