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

PHP & Base de données Discussion :

1er Class et erreur Undefined Variable [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 219
    Points : 121
    Points
    121
    Par défaut 1er Class et erreur Undefined Variable
    Bonjour,

    J'ai fait la class suivante :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    class db {
        private $pdo;
        private $instance=null;
        private $options = array(PDO::MYSQL_ATTR_INIT_COMMAND    => "SET NAMES utf8" );
        private $host = 'localhost';
        private $db_name = '_erp';
        private $user = 'root';
        private $pass ='';    
        private $dns = '';
     
        public function __construct() {
            try {
                $this->$dns = 'mysql:host='.  $this->$host.';dbname='.$this->$db_name;
                $this->instance = new PDO($this->$dns,  $this->$user,  $this->$pass,  $this->$options);
                $this->instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            }
            catch (PDOException $e)
            {
                $error='Impossible de se connecter à la base de donnée'.$e->getMessage() .'\n'.$dns.' '.$user.' '.$pass;
                include'error.php.html';
                exit();
            }
        }
     
        public function getinstance() {
            return $this->instance;
        }
    }
    Je lance ensuite :
    J'obtiens une erreur : Notice: Undefined variable: host in ...

    Je ne comprends pas pourquoi alors que j'ai bien déclarer ma variable avec $this->

    Merci pour votre aide
    Tornade

  2. #2
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Salut,

    Tu à un "$" de trop dans tes appels de variables, essaye comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public function __construct() {
            try {
                $this->dns = 'mysql:host='.  $this->host.';dbname='.$this->db_name;
                $this->instance = new PDO($this->dns,  $this->user,  $this->pass,  $this->options);
                $this->instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            }
            catch (PDOException $e)
            {
                $error='Impossible de se connecter à la base de donnée'.$e->getMessage() .'\n'.$this->dns.' '.$this->user.' '.$this->pass;
                include'error.php.html';
                exit();
            }
        }


    Les boutons et existent, servez-vous en

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 219
    Points : 121
    Points
    121
    Par défaut
    Merci,

    j'ai donc fait le modifications suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            try {
                $dns = 'mysql:host='.  $this->host.';dbname='.$this->db_name;
                $this->instance = new PDO($this->dns,  $this->user,  $this->pass,  $this->options);
                $this->instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            }
    je ne sais pas pourquoi mais ne fonctione pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->$dns = 'mysql:host ....
    j'ai plus d'erreur de variable mais j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Impossible de se connecter à la base de donnée invalid data source name. mysql:host=localhost;dbname=_erp. root.
    comme c'est ma première class ci dessous le code qui fonctionne, mais c'est pas une class !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     $host="localhost";
    $username="root";
    $password="";
    $db_name="_erp";
    $ConnexionString="mysql:host=$host;dbname=$db_name";
     
    try
    {
        $pdo= new PDO($ConnexionString, $username,$password);
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    Merci pour votre aide

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par amoiraud
    Tu à un "$" de trop dans tes appels de variables
    Citation Envoyé par tornade69
    je ne sais pas pourquoi mais ne fonctione pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    $this->$dns = 'mysql:host
    ....
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 219
    Points : 121
    Points
    121
    Par défaut
    Hello,
    A force de chercher pourquoi sans savoir pourquoi, cela fait de copier coller qui ne sont pas bon.
    En fait la copie a été coriger entre temps.
    Je ne comprends pas pourquoi il ne peut pas se connecter à la base.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    try {
        $dns = 'mysql:host='.  $this->host.';dbname='.$this->db_name;
        $this->instance = new PDO($this->dns,  $this->user,  $this->pass,  $this->options);
        $this->instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    Comme je n'ai pas compris pourquoi une fois avec $this-> et pas l'autre fois, j'ai fait des essais dans tous les sens. Le message final est
    Impossible de se connecter à la base de donnée invalid data source name. mysql:host=localhost;dbname=_erp. root.
    Et je ne comprends pas la différence entre l'ancien code qui marche et le nouveau qui ne marche pas.

  6. #6
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    en fait puisque tu en es aux tests, tu remarqueras que ceci fonctionne
    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
     
    Class foobar {
     
    protected $attribut;
     
    function method(){
     
       $this->attribut = 1; //standard
       $this->{"attribut"} = 2; // pour des nom d'attributs avec des signes cabalistiques.... 
       $piege = "attribut";
       $this->$piege = 1;  //ça sert dans __set() avec <a href="http://www.php.net/manual/en/function.property-exists.php" target="_blank">http://www.php.net/manual/en/functio...rty-exists.php</a>
     
    }
     
     
    }
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 219
    Points : 121
    Points
    121
    Par défaut
    Merci à tous pour votre aide ...

    J'avais mal déclarer $this->dns , et pourtant j'avais la réponse sous les yeux.

    Et merci pour la présentation très simple et $this qui fonctionne.

    Tornade

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

Discussions similaires

  1. erreur (undefined variable) suite à inclusion
    Par flex@ dans le forum Langage
    Réponses: 2
    Dernier message: 28/01/2008, 12h10
  2. [SQL] Module de recherche et erreur undefined variable
    Par gryder213 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 30/09/2007, 17h15
  3. message d'erreur "Undefined variable"
    Par nabians dans le forum Langage
    Réponses: 5
    Dernier message: 26/07/2007, 17h24
  4. Réponses: 2
    Dernier message: 30/06/2007, 14h25
  5. [Tableaux] Message erreur: undefined variable
    Par arti2004 dans le forum Langage
    Réponses: 9
    Dernier message: 23/05/2006, 14h31

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