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 :

Use of undefined constant DB_HOST, une class CRUD


Sujet :

PHP & Base de données

  1. #1
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut Use of undefined constant DB_HOST, une class CRUD
    Bonjour.

    Avec ma class ci-bas, j'obtiens ces erreurs :

    PHP Notice: Use of undefined constant DB_HOST - assumed 'DB_HOST' in /home/public_html/class.php on line 93
    PHP Notice: Use of undefined constant DB_USER - assumed 'DB_USER' in /home/public_html/class.php on line 93
    PHP Notice: Use of undefined constant DB_PASS - assumed 'DB_PASS' in /home/public_html/class.php on line 93
    PHP Notice: Use of undefined constant DB_NAME - assumed 'DB_NAME' in /home/public_html/class.php on line 93
    PHP Fatal error: Call to undefined method dao::tableExists() in /home/public_html/class.php on line 56

    pourtant, ça semble bien défini?

    C'est quoi mon erreur?

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
     
    <?php
    class dao
    {
            private $db = NULL;
            private $connection_string = NULL;
            private $db_host = DB_HOST;        
            private $db_user = DB_USER;        
            private $db_pass = DB_PASS;        
            private $db_name = DB_NAME;        
            private $con = false;
            private $result = array();
     
            public function __construct($db_user = DB_USER, $db_pass = DB_PASS, $db_name = DB_NAME, $db_type = 'mysql', $db_host = 'localhost')
            {
                    $this->db_host = $db_host;
                    $this->db_user = $db_user;
                    $this->db_pass = $db_pass;
                    $this->db_name = $db_name;
                    $this->connection_string = "mysql:host=".$db_host.";dbname=".$db_name;
                    return $this;
            }
     
            public function connect()
            {
                    if(!$this->con)
                    {
                    try {
                            $this->db = new PDO($this->connection_string,$this->db_user,
                $this->db_pass);
                            $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                            $this->con = true;
                            return $this->con;
                            }
                            catch (PDOException $e)
                            {
                            return $e->getMessage();
                            }
                    }
                    else
                    {
                            return true; //already connected, do nothing and show true
                    }
            }
     
            public function disconnect()
            {
                    if($this->con)
                    {
                            unset($this->db);$this->con = false;
                            return true;
                    }
            }
     
            public function select($table, $rows = '*', $where = null, $order = null)
            {
                    if($this->tableExists($table))
                    {
                            $q = 'SELECT '.$rows.' FROM '.$table;
                            if($where != null)
                                    $q .= ' WHERE '.$where;
                            if($order != null)
                                    $q .= ' ORDER BY '.$order;
                            $this->numResults = null;
                    try {
                            $sql = $this->db->prepare($q);
                            $sql->execute();
                            $this->result = $sql->fetchAll(PDO::FETCH_ASSOC);
                            $this->numResults = count($this->result);
                            $this->numResults === 0 ? $this->result = null : true ;
                            return true;
                            }
                            catch (PDOException $e)
                            {
                                    return $e->getMessage().''.$e->getTraceAsString().''; 
                            } 
                    }
            }
     
            public function getResult()
            {
                    return $this->result;
            }
     
            public function getRows()
            {
                    return $this->numResults;
            }
     
    }
    ?>
     
    <?php
    $db = new dao('user','pass','mabase');
    $db->connect();
    $result = $db->select('matable');
    if ($result === true)
    {
        echo "result rows ".$db->getRows()." ";
        echo "result select ";
        print_r($db->getResult());
    }
    else
    {
        var_dump($result);
    }
    $db->disconnect();
    ?>
    On oublie souvent la simplicité ou la base dans la vie: Maslow

  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
    Ou est défini DB_HOST etc. ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    Je croyais qu'en faisant ceci: ça définissait.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $db = new dao('user','pass','mabase');
    $db->connect();
    $result = $db->select('matable');
    On oublie souvent la simplicité ou la base dans la vie: Maslow

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Le problème c'est tout simplement que tes constantes de connexion ne sont pas connu.

    Quand tu écris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     private $db_host = DB_HOST;
    DB_HOST ça doit être une valeur défini...ce qui ne semble pas être le cas ici; ou alors je ne vois pas où...



    Pour ma part, voici la méthode que j'applique systématiquement

    Je crée un fichier connect.php contenant uniquement les infos de la BD

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php 
     
     
    		//fichier contenant les constantes de connexion
    		define("NOM","nomBase");
    		define("PASSE","mdpBase");
    		define("SERVEUR","serveurBase");
    		define("BASE","desBase");
     
    ?>
    Du coup, après tu peux reprendre ton code en incluant simplement le fichier avec les constantes de connexion

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    require_once("./../BD/connect.php"); //inclusion du fichier connect.php	 
     
        $connexion = mysqli_connect(SERVEUR,NOM,PASSE,BASE);
    Ici les constantes sont connus.

    Reste à adapter en objet...

  5. #5
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    Le host est défini dans le __constructeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            public function __construct($db_user = DB_USER, $db_pass = DB_PASS, $db_name = DB_NAME, $db_type = 'mysql', $db_host = 'localhost')
    j'ai une autre erreur aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PHP Fatal error:  Call to undefined method dao::tableExists() in /home/public_html/class.php on line 56
    On oublie souvent la simplicité ou la base dans la vie: Maslow

  6. #6
    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
    Comme ça alors si tu n'utilises pas les constantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class dao
    {
            private $connection_string;
     
            public function __construct($db_user, $db_pass, $db_name, $db_type = 'mysql', $db_host = 'localhost')
            {
                    $this->db_host = $db_host;
                    $this->db_user = $db_user;
                    $this->db_pass = $db_pass;
                    $this->db_name = $db_name;
                    $this->connection_string = "mysql:host=".$db_host.";dbname=".$db_name;
            }
    Concernant la deuxième erreur, même combat : ou est défini la méthode "tableExists" ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Tableau constant dans une classe
    Par wap010 dans le forum C++
    Réponses: 7
    Dernier message: 05/02/2008, 08h52
  2. Tableau de constantes dans une classe statique
    Par Nico_stras dans le forum C#
    Réponses: 4
    Dernier message: 05/03/2007, 20h18
  3. Enlever message : Notice: Use of undefined constant
    Par Ice-tea dans le forum Langage
    Réponses: 2
    Dernier message: 12/08/2006, 20h53
  4. Réponses: 2
    Dernier message: 08/08/2006, 11h54
  5. [Tableaux] Use of undefined constant
    Par lodan dans le forum Langage
    Réponses: 3
    Dernier message: 18/07/2006, 08h36

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