Salut à tous.
Je suis en train d'essayer un truc classique avec PDO : appeler des classes et les hydrater avec des données.
J'utilise un modèle que j'utilise sur pas mal d'autres sites à moi et après plusieurs heures de recherches : j'en reviens à vous.
La page qui pose probleme me renvoie le message :
Voici l'extrait de la page en question :Fatal error: Call to a member function prepare() on a non-object in /homepages/33/d498484054/htdocs/class/modele.class.php on line 11
crea.php
Avant cela je fait appel à server.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $id = intval($_GET['id']); $query = $db->query("SELECT id from crea where id = ".$id.""); if($result = $query->fetch()){ $crea = new Crea($result['id']); (...)
Qui lui même fait appel à import.php pour inclure les classes "Crea" et "Modele"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 session_start(); $db = new PDO('mysql:host=xxx;dbname=xxx;charset=utf8','xxx','xxx', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); include_once('class/import.php');
crea.class.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 include_once("modele.class.php"); include_once("crea.class.php");
...et enfin le debut de modele.class.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <?php class Crea extends Modele{ public function __construct($id){ $this->addKey("id"); $this->addKey("title"); $this->addKey("description"); $this->addKey("link"); $this->tableName = "crea"; parent::__construct($id); } }
Donc pour moi : il veux me dire que $db n'existe pas : HORS je l'ai bien déclaré dans server.php non ?
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 <?php class Modele{ public $table = array(); protected static $db; public $tableName="none"; protected $error=false; public function __construct($value){ $this->addKey("id"); $obj =self::$db->prepare("SELECT * FROM ".$this->tableName." WHERE id=?;"); // Erreur ici $obj->execute(array($value)); if($obj->rowCount()==1){ $obj->setFetchMode(PDO::FETCH_OBJ); foreach ($obj->fetch() as $key => $value) $this->hydratePrivate($key,$value); } else if($value=!-1) $this->error="Aucun élément trouvé: id=".$value."(".$this->tableName.")"; } public static function setPdo($_db){ self::$db = $_db; } (...)
J'ai vérifié mes includes si il n'y avait pas un soucis de sous répertoires ou une connerie du genre mais apparemment non !
PDO est marqué comme activé dans phpinfo().
Je suis chez *soupir* 1&1.
Comme je l'ai dit j'ai déja utiliser cette structure des dizaines de fois et c'est la première fois que je galère sur un truc pareil !
Help !
Merci d'avance
Partager