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 :

Erreur: Undefined property: Database::$db_connexion


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 176
    Par défaut Erreur: Undefined property: Database::$db_connexion
    Bonjour, je fais une todo list avec comme technologie MySQL, PHP, jQuery et ajax.

    Pour le moment mon read et insert dans ma DB fonctionne.

    par contre lorsque je click sur le bouton update d'une tâche, j'ai cette erreur, qui me renvoi dans la fonction qui va récupérer la tâche à modifier via son id.
    <br />
    <font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
    <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Undefined property: Database::$db_connexion in C:\wamp64\www\todo-list-v3\Crud.php on line <i>52</i></th></tr>
    <tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
    <tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
    <tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0001</td><td bgcolor='#eeeeec' align='right'>403864</td><td bgcolor='#eeeeec'>{main}( )</td><td title='C:\wamp64\www\todo-list-v3\action.php' bgcolor='#eeeeec'>...\action.php<b>:</b>0</td></tr>
    <tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>0.0001</td><td bgcolor='#eeeeec' align='right'>405016</td><td bgcolor='#eeeeec'>Crud->getTaskById( )</td><td title='C:\wamp64\www\todo-list-v3\action.php' bgcolor='#eeeeec'>...\action.php<b>:</b>81</td></tr>
    </table></font>
    <br />
    <font size='1'><table class='xdebug-error xe-uncaught-exception' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
    <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Fatal error: Uncaught Error: Call to a member function prepare() on null in C:\wamp64\www\todo-list-v3\Crud.php on line <i>52</i></th></tr>
    <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Error: Call to a member function prepare() on null in C:\wamp64\www\todo-list-v3\Crud.php on line <i>52</i></th></tr>
    <tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
    <tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
    <tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0001</td><td bgcolor='#eeeeec' align='right'>403864</td><td bgcolor='#eeeeec'>{main}( )</td><td title='C:\wamp64\www\todo-list-v3\action.php' bgcolor='#eeeeec'>...\action.php<b>:</b>0</td></tr>
    <tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>0.0001</td><td bgcolor='#eeeeec' align='right'>405016</td><td bgcolor='#eeeeec'>Crud->getTaskById( )</td><td title='C:\wamp64\www\todo-list-v3\action.php' bgcolor='#eeeeec'>...\action.php<b>:</b>81</td></tr>
    </table></font>
    ma connexion à ma db:
    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
    <?php
     
    //Class pour la connexion à ma DB.
    class Database {
     
        private $serverName;
        private $db_user;
        private $db_pass;
        private $db_name;
        private $charset;
        private $pdo;
     
        function db_connexion() {
            $this->serverName = 'localhost';
            $this->db_user = 'root';
            $this->db_pass = 'password';
            $this->db_name = 'todo_list';
            $this->charset = 'utf8mb4';
     
            if ($this->pdo === null) {//vérifie qu'une instance du PDO n'est pas déjà créée
                try {
                    $dsn = "mysql:host=" . $this->serverName . ";dbname=" . $this->db_name . ";charset=" . $this->charset;
                    $pdo = new PDO($dsn, $this->db_user, $this->db_pass);
                    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//permet l'affichage des erreurs
                    return $pdo;
                } catch (PDOException $e) {
                    echo "erreur connexion à la base de données : " . $e->getMessage();
                }
            }
        }
    }
    ma fonction qui va rechercher la tâche d'après son id, l'erreur crud.php ligne 52, renvoi ici à la ligne 5.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //Fonction qui va lire une tâche dans la DB sur base de son id.
        public function getTaskById($id) {
            $db = new Database;
            $sql = "SELECT * FROM tasks WHERE id = :id";
            $stmt = $db->db_connexion->prepare($sql);
            $stmt->execute(['id' => $id]);
            $result = $stmt->fetch(PDO::FETCH_ASSOC);//renvoi un tableau d'attributs
            return $result;
            //$stmt = null;
        }
    le traitement du formulaire de modification, l'erreur action.php ligne 81 renvoi ici à la ligne 5:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //Traitement formulaire update d'une tâche.
    if(isset($_POST['edit_id'])){
        $id = $_POST['edit_id'];
        //echo "id= " .$id;
        $row = $crud->getTaskById($id);
        echo json_encode($row);
        //$("#id").val(data.id);   
    }

    après plusieurs pistes sur google sans résultat, je suis à cours d'idées.

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    salut,

    il faut potasser un peu :
    Comprendre PDO
    PDO, une soupe et au lit

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 176
    Par défaut
    ça vient surement de moi, mais je ne capte pas mon erreur...
    même après avoir lu la doc...

    les exemples que je trouve, sont semblable à ce que j'ai fais.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 176
    Par défaut
    Ok, ma façon de faire est bonne, c'est juste mon nom de colonne id ==> id_task qui n'était pas bon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    //Fonction qui va lire une tâche dans la DB sur base de son id.
        public function getTaskById($id) {
            $db = new Database;
            $sql = "SELECT * FROM tasks WHERE id_task = :id_task;";
            $stmt = $db->db_connexion()->prepare($sql);
            $stmt->execute(array(':id_task' => $id));
            $result = $stmt->fetch(PDO::FETCH_OBJ);//renvoi un tableau d'attributs
            return $result;
            //$stmt = null;

  5. #5
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par Cisman Voir le message
    Ok, ma façon de faire est bonne
    Non pas du tout, à chaque fois que tu fais new Database(), tu ouvres une nouvelle connexion à la base de données.
    T'as besoin de faire 10 requêtes, tu vas ouvrir 10 connexions ?
    Relis bien les exemples des deux liens donnés précédemment.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/02/2018, 00h25
  2. Erreur "Undefined property: stdClass::" à résoudre
    Par cedrus dans le forum Langage
    Réponses: 6
    Dernier message: 11/10/2013, 14h09
  3. [MySQL] Message d'erreur Undefined property: stdClass::
    Par Rony Rauzduel dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/10/2012, 11h03
  4. erreur 1119: Access of possibly undefined property ..
    Par ouldfella dans le forum Flash
    Réponses: 1
    Dernier message: 23/03/2010, 12h25
  5. Réponses: 7
    Dernier message: 29/06/2007, 13h19

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