Bonjour,
Voila je rencontre un petit problème avec mon code.
Décrivez ici votre code ou ce que vous cherchez à faire
<?php
class Model{
static $connections = array();
public $db = 'default';
public function __construct(){
$conf = Conf::$databases[$this->db];
if(isset(Model::$connections[$this->db])){
return true;
}
try{
$db = new PDO('mysql:host='.$conf['host'].';dbname='.$conf['database'].';',$conf['login'],$conf['password']);
Model::$connections[$this->db] = $pdo;
}catch(PDOException $e){
if(Conf::$debug >= 1){
die($e->getMessage());
}else{
die('Inpossible de se connecter à la base de donnée');
}
}
echo "j'ai chargé la base de donne et je me suis connecté";
}
public function find(){
}
}
?>
Décrivez ici ce que vous cherchez à obtenir
Notice: Undefined variable: pdo in C:\EasyPHP-Devserver-17\eds-www\Tuto\Site\core\Model.php on line 18
Salut,
La réponse se situe là :
<?php
$db = new PDO('mysql:host='.$conf['host'].';dbname='.$conf['database'].';',$conf['login'],$conf['password']);
Model::$connections[$this->db] = $pdo;
Je te laisse trouver avec l'erreur disant : Notice: Undefined variable: pdo
.
Bonjour,
Suis bien la vidéo, il te manque un truc.
Tu as trouvé ce qu'est l'erreur : Notice: Undefined variable: pdo ?
Bonjour.
Avant de venir demander de l'aide, tu devrais d'abord visionner le tutoriel suivant : Tutoriel Vidéo PHP » Se démerder tout seul, le titre est peut-être un peu trash, mais tu remarqueras par la suite que tu trouveras la réponse toi même à la plupart des problèmes que tu rencontreras.
Car je ne veux pas dire, mais le message d'erreur qui t'es retourné est assez explicite pour corriger le problème.
Il y a quand même quelque chose qui m'étonne, il y a environ deux ans, tu avais créer des sujets concernant des problèmes par rapport au tutoriel Développer un site : Jour 4, Gestion des routes et là tu en fais un pour le tutoriel Développer un site : Jour 3, les models, tu passes donc du jour 4 au jour 3 en deux ans de temps ?
Mais ce qui me surprend le plus, c'est qu'il y a deux ans tu avais déja fait le code que tu exposes sans avoir de problème et là tu n'y arrives plus juste parce que tu t'es trompé de nom pour une variable ?
Il faut croire que tu ne comprends absolument pas les tutoriels vidéos que tu visionnes, même après les avoir vus plusieurs fois.
Lartak, l'homme qui dit les choses telles qu'elles sont ! (aucune attaque, au contraire ;) )
Observe ton code tu n'a déclarer aucune variable au niveau du constructeur
<?php
class Model{
static $connections = array();
public $db = 'default';
public function __construct($pdo){
$conf = Conf::$databases[$this->db];
if(isset(Model::$connections[$this->db])){
return true;
}
try{
$db = new PDO('mysql:host='.$conf['host'].';dbname='.$conf['database'].';',$conf['login'],$conf['password']);
Model::$connections[$this->db] = $pdo;
}catch(PDOException $e){
if(Conf::$debug >= 1){
die($e->getMessage());
}else{
die('Inpossible de se connecter à la base de donnée');
}
}
echo "j'ai chargé la base de donne et je me suis connecté";
}
}
?>
avec le $pdo au niveau du constructeur tu va acceder à la variable , je te propose un code comme
<?php
namespace FranzPR\Http\Controllers\Auth\Constructor;
class databaseConstructor
{
private $pdo;
public function __construct($login, $password, $database_name, $host = 'localhost')
{
$this->pdo = new \PDO("mysql:dbname=$database_name;host=$host;charset=utf8", $login, $password);
$this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$this->pdo->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_OBJ);
}
}
?>
et ensuite tu crée une class qui gère le connection à la base de donnée
<?php
namespace FranzPR\Http\Controllers\Auth\Constructor;
class appConstructor
{
static $db = null;
static function getDatabase(){
if(!self::$db){
self::$db = new databaseConstructor('root', '', 'franzpr');
}
return self::$db;
}
}
?>
et je te propose de programmer avec phpstorm pour un code plus lisible et clair
Observe ton code tu n'a déclarer aucune variable au niveau du constructeur
Son problème n'a rien à voir avec son constructeur de classe, c'est juste qu'il s'est trompé dans le nom de variable.
Au lieu de faire :
Model::$connections[$this->db] = $db;
Il a fait :
Model::$connections[$this->db] = $pdo;
$db
étant la variable qu'il a défini juste au dessus.
Lartak j'ai eu un petit problème avec mon pc
Attention ça risque d'être dur
J'aime bien son excuse ^^. Si tu avais compris dès le début ce que tu avais fais, tu n'aurais pas eu besoin de demander de l'aide 2-3 ans après sur un point comme ça. En plus de ça cela veut dire que tu ne sais toujours pas corriger ce genre d'erreur simple et que l'on reçoit souvent, et qui doit avoir je ne sais combien de topic sur internet.
Je me demande quand même comment tu bosse pour apprendre car tu n'es malheuresement pas un cas isolé. Peut-être aussi tu essaye de faire un tuto trop compliquer pour toi pour l'instant.