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 :

Require_once ne charge pas


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Points : 14
    Points
    14
    Par défaut Require_once ne charge pas
    Bonjour tout le monde. Ceci est mon premier post sur le forum. Au préalable, je tiens à spécifier que j'ai fait quelques recherches malheureusement infructueuses.

    Voici mon problème. Pour ma connexion à ma BDD, j'ai créé un fichier connexion.php qui contient tout ce qu'il faut pour me connecter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    		$connectionString  = "mysql:host=127.0.0.1;dbname=maBase";
    		$connectionUser = "root";
    		$connectionPassword = "";
     
    		$c = new PDO($connectionString, $connectionUser, $connectionPassword);
    ?>
    Mais quand je charge ce fichier, que ce soit avec un require ou un include (once ou pas) mon éditeur me dit que ma variable de connexion ($c) est inconnue.
    Je précise que j'ai également testé avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include_once dirname (__FILE__).'fonctions.php';
    mais toujours sans aucun résultat.
    J'ai aussi tenté d'inclure ce code dans une fonction puis d'invoquer la fonction mais toujours sans succès.

    Le code des autres pages ne contient pas d'erreur puisque j'ai testé avec le code précédent écrit en dur (enfin c'est surtout que ça a marché).

    Merci d'avance pour votre aide.

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Points : 273
    Points
    273
    Par défaut
    Bon, une chose qui me gène un peu... $c, pour le nom d'une connection à une BDD, c'est assez pourri, surtout si tu comptes l'utiliser à travers tout tes includes (enfin, j'imagine que ta connection, tu la fais au début de ton script).

    Donc, tu auras une chance sur 2 d'écraser ta variable $c avec un nom pareil... et ensuite, tu devras te refaire tout le chemin inverse de l'inclusion de tes fichiers.... Sauf si bien entendu tu stockes cela dans une classe Registry, ou quelque chose dans le genre... Bon, je dis ça .... passons...

    Est tu sur de bien inclure ton script ??

    Après $c = new....
    fais un var_dump($c);

    Sinon, le error reporting, place le sur E_ALL.... si ce n'est pas déjà fait.

    Cordialement,
    Patouche

  3. #3
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Rajoute un / slash pour voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include_once dirname (__FILE__).'/connexion.php';
    En tout cas un dirname (__FILE__) renvoie un chemin du genre : blablabla/www/projet


    A coté de ça, il y a une fonction qui me semble pas mal, c'est : set_include_path()
    Grace à cela, on défine 1 bonne fois pour toute le chemin où ce trouve son webRoot, (voir même d'autres répertoires), après il n'est plus utile de faire des dirname(), on inclus ses fichiers seulement à partir du webRoot.

    Exemple :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    set_include_path(get_include_path().PATH_SEPARATOR.'blablabla'.DIRECTORY_SEPARATOR.'www'.DIRECTORY_SEPARATOR.'projet'.DIRECTORY_SEPARATOR);
    // Ou alors :
    set_include_path(get_include_path().PATH_SEPARATOR.dirname(__FILE__).DIRECTORY_SEPARATOR);
     
    // On inclus des fichiers
    include('connexion.php');
     
    // Ou autre exemple si le fichier ce trouve dans d'autres réperpoire
    include('les_fonctions/truc_muche.php');
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Tout d'abord merci pour votre aide.

    Citation Envoyé par patouche Voir le message
    Est tu sur de bien inclure ton script ??

    Après $c = new....
    fais un var_dump($c);
    Il me renvoie ça:
    object(PDO)#1 (0) { }


    set_include_path(get_include_path().PATH_SEPARATOR.dirname(__FILE__).DIRECTORY_SEPARATOR);
    je l'ai appliqué aux 2 fichiers, puis j'ai ajouté dans ma source
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo get_include_path();
    Il me renvoie bien le même chemin pour les 2 fichiers.
    Mais mon éditeur me dit toujours que ma variable est indéfinie, alors qu'en faisant CTRL+clic sur ma variable il me renvoie directement sur ma page fonctions.php

    Je n'y comprends vraiment plus rien.
    (et j'ai quand même essayé de tester si ça fonctionnait en pratique, mais non)

  5. #5
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Fait un copier/coller du message d'erreur ici
    Met y aussi la ligne de code que le message d'erreur aura précisé.

    Cependant, tu parle tout le temps du ficher fonction.php alors qu'apriori ton code de connexion ce fait dans connexion.php, de plus il a l'air bien inclus vu que le var_dump($c) t'as répondu que c'était un objet PDO.

    Mets y des echo 'truc much'; dans tes 2 fichiers ci-dessus pour au moins voir IN VISU s'ils sont inclus ou pas.


    Après ça, si tu utilise une connexion dans une fonction, alors c'est un problème de portée (visibilité).
    Question donc : Ou et comment exploite tu ce $c ?


    PS : change ce fichu nom $c par un autre du genre $pdoDB comme t'a fait remarqué patouche ... à éviter à 100% ... ce sont des économies bouts d'chandelles.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Vous allez me dire ce que vous en pensez, mais juste en renommant la variable connexion en $pdoDB ça a marché...
    Vu que je n'ai pas beaucoup de pages pour l'instant (3-4) je suis sur que je n'avais pas de variable $c autre que celle de la PDO.

    Il me met toujours variable indéfinie dans mon éditeur mais le script fonctionne et insère bien les données.

    En tous cas, un grand merci pour vos conseils.

  7. #7
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Vous allez me dire ce que vous en pensez
    En 1er je dirais qu'on est au moins 2 à pouvoir ce reconvertir dans la voyance

    Après, éclaircir ce point serait à envisager, c'est peut être l'arbre qui cache la forêt, parce que là, je n'ai pas d'explication.

    Si on raisonne un peu, tu avais inclus en 1er une page qui contenait $c, et plus loin tu l'exploitais ... et là erreur -> variable non définie !!!
    Ca suppose donc que cette variable était détruite entre ces 2 moments.
    La seule manière que je connaisse pour détruire une variable c'est : unset($variable).
    Recherche dans ce sens là.

    J'peux pas en dire plus.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  8. #8
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Points : 273
    Points
    273
    Par défaut
    ça c'était à prévoir... Ne cherche plus pas la suite à faire ce genre de choses....

    Une variable qui à un nom pareil et que tu appelles entre diverses fichiers, c'est la course à la catastrophe....

    Content que ton problème soit résolu.


    Patouche

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

Discussions similaires

  1. [MySQL] Require_once ne charge pas le fichier
    Par Jarodd dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 04/02/2009, 22h37
  2. Internet Explorer ne charge pas le fichier JS
    Par mr32 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 05/02/2006, 12h46
  3. [winXP][plantage] ftlmgr.sys ne charge pas, qui la ?.
    Par arnolem dans le forum Windows XP
    Réponses: 10
    Dernier message: 10/06/2005, 17h35
  4. Réponses: 2
    Dernier message: 21/04/2005, 17h09

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