[resolu] php objet: $this-> est vide

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [resolu] php objet: $this-> est vide

Re: php objet: $this-> est vide

par juliette » 30 juin 2012, 20:47

oui c'est bon, tous fonctionne bien, merci beaucoup :)

Re: php objet: $this-> est vide

par Mazarini » 30 juin 2012, 18:03

Effectivement, si tu as une erreur de connexion, ca ne déclenche pas d'exception si tu ne le demandes pas.
Tu as demandé qu'un affichage de message, d'ailleurs je pensais que ton erreur venait de ca, je n'avais pas vu le $ en trop.

Edit : fais un test avec un mauvais user pour vérifier.

Re: php objet: $this-> est vide

par juliette » 30 juin 2012, 16:25

bon, je pense que c'est dans le try pour le constructeur...

Re: php objet: $this-> est vide

par juliette » 30 juin 2012, 15:20

désolé Mazarini, je ne comprend pas ce que tu veux dire ???
tu parle du try{ } ou de la fonction query ?

Re: php objet: $this-> est vide

par Mazarini » 30 juin 2012, 14:26

PDO::ERRMODE_EXCEPTION aussi si tu veux gérer des exceptions

Re: php objet: $this-> est vide

par juliette » 30 juin 2012, 14:18

resolu
public function query($sql) {
        $req = $this->$db->prepare($sql);
        $req->execute();
        return $req->fetchAll(PDO::FETCH_OBJ);
    }
dans cette fonction j'ai un $ en trop devant bd j'ai pas encore trop bien saisie le principe...

Re: php objet: $this-> est vide

par juliette » 30 juin 2012, 14:01

a savoir que var_dump de $DB retourne:
object(DB)[1]
  private 'host' => string 'localhost' (length=9)
  private 'username' => string 'root' (length=4)
  private 'password' => string '' (length=0)
  private 'database' => string 'bdd' (length=9)
  private 'db' => 
    object(PDO)[2]

[resolu] php objet: $this-> est vide

par juliette » 30 juin 2012, 13:59

Salut a tous, je commence la programation objet avec une simple classe de connections pour comprendre le principe...
je rencontre un soucis, a 1er vu et si je comprend bien: Fatal error: Cannot access empty property in C...
$this-> ne peut jamais etre vide en php, mon soucis est que j'ai (private $password = '';) qui est forcement vide car je suis en local...
est ce que je me trompe ? ya t'il une solution ?

ma classe:
<?php

Class DB {

    private $host = 'localhost';
    private $username = 'root';
    private $password = '';
    private $database = 'bdd';
    private $db;

    public function __construct($host = null, $database = null, $username = null, $password = null) {
        if ($host != null) {
            $this->host = $host;
            $this->username = $username;
            $this->password = $password;
            $this->database = $database;
        }
        try {


            $this->db = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->database, $this->username, $this->password,
                            array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8', PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING
                    ));
        } catch (PDOException $e) {
            die('<h1>Impossible de se connecter a la base de donnees !</h1>');
        }
    }

    public function query($sql) {
        $req = $this->$db->prepare($sql);
        $req->execute();
        return $req->fetchAll(PDO::FETCH_OBJ);
    }

}

?>
mon index:
<?php 
require 'dbClass.php';
$DB = new DB();

var_dump($DB->query('SELECT * FROM table'));
?>

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <div>contenu</div>
    </body>
</html>
au cas ou je me trompe...