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 :

variable non transmise bien que déclarée en global


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 373
    Points : 5 734
    Points
    5 734
    Billets dans le blog
    1
    Par défaut variable non transmise bien que déclarée en global
    Bonjour,

    dans un fichier de connexion, je fais :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $bdd = new MyPdo("support_XXX");
    var_dump($bdd);
    et le var_dump montre que la connexion se fait bien.
    object(MyPdo)[1]
    protected 'DB_NAME' => string 'support_XXX' (length=11)
    protected 'HOST' => string 'localhost' (length=9)
    protected 'USER' => string 'root' (length=4)
    protected 'PASS' => string 'root' (length=4)
    Par contre dans un autre fichier, bien que la variable $bdd soit déclarée en global, elle est vide. Pourquoi ?
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    global $bdd;
    var_dump($bdd);
    null
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Quel est le lien entre les deux fichiers ?

    "global" permet d'utiliser une variable du script à l'intérieur d'une fonction;
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 373
    Points : 5 734
    Points
    5 734
    Billets dans le blog
    1
    Par défaut
    Oui, je n'ai pas précisé. La connexion est dans le fichier principal (index.php) via un include. index.php contient également un formulaire d'authentification et c'est dans l'action de ce formulaire qu'on a besoin de la variable.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="authenticate2.php" method="post">
    donc comment transmettre $bdd à authenticate2.php" ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    très simplement : au début de chaque (nouveau) fichier/script ouvert
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $bdd = new MyPdo("support_XXX");

    Je crois que tu ne comprends pas la (limitation de) portée d'une globale...
    ...ni sont fonctionnement (tel que précisé par sabotage).

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 373
    Points : 5 734
    Points
    5 734
    Billets dans le blog
    1
    Par défaut
    C'est en effet ce que laisse croire ma question (et c'était vrai au moment où je la posais) mais néanmoins le jour où j'avais écrit ce code, je ne me trompais pas : dans authenticate2.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    include __DIR__."\\connect_mysql.php";
     
     
     function authentification()
    {		
    	//on utilise $bdd
    }
     $auth=authentification();

    avec dans connect_mysql.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ...try{
    				$bdd = new MyPdo("support_XXX");
      }
    catch(PDOException $e){
    				echo "argggggggggggggg".$e->getMessage();
    				return(FALSE);
    			}

    et pour que $bdd soit connue par la fonction authenticate(), je la passe par paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     function authentification($bdd)
    Je fais comme il faut ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour frankensteinSc.

    Tu devrais DORMIR la nuit. Tu aurais les idées plus claires au réveil.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    include __DIR__."\\connect_mysql.php"; // $bdd est déclaré en DEBUT de script
     
    function authentification()
    {		
    	global $bdd; // on peut ENFIN utiliser $bdd DANS LA FONCTION !
    	// ....
    }
    $auth=authentification();

  7. #7
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 373
    Points : 5 734
    Points
    5 734
    Billets dans le blog
    1
    Par défaut
    J'étais pourtant persuadé d'avoir déjà essayé...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

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

Discussions similaires

  1. Variable non transmise (post) sur serveur distant
    Par mikl86 dans le forum Langage
    Réponses: 2
    Dernier message: 20/03/2011, 12h27
  2. [Flex3] Variables non transmises depuis l'event scroll
    Par alain31tl dans le forum Flex
    Réponses: 14
    Dernier message: 10/10/2010, 21h13
  3. [SQL-Server] mssql/php update et variables non transmises
    Par evra76 dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 26/06/2009, 11h03
  4. [POO] Une valeur de variable non transmise.
    Par claritos1 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 23/05/2008, 11h45

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