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 :
Fatal error: Call to a member function prepare() on a non-object in /homepages/33/d498484054/htdocs/class/modele.class.php on line 11
Voici l'extrait de la page en question :
crea.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']);
(...)
Avant cela je fait appel à server.php :
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');
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
include_once("modele.class.php");
include_once("crea.class.php");
crea.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);
	}
}
...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
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;
	}
(...)
Donc pour moi : il veux me dire que $db n'existe pas : HORS je l'ai bien déclaré dans server.php non ?
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