Bonjour,

En fait, j'ai une classe DB qui me permet d'accèder de manière générale à ma base de donnée (mysql). J'ai ensuite une classe Account qui hérite de DB. C'est un objet qui contient notamment autant de variables qu'il y a de champs dans la table account, les variables ayant les mêmes noms que les champs. J'espères avoir été plus ou moins clair, un exemple suivra.

Mon but est de charger dans un objet Account les champs d'une entrée de la table account, pour en fait passer de la BDD à un objet (façon maison bien sûr).

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
 
class DB
{
...
	function fetch()
	{
		if ($this->dbFetch == 'array')
			return mysql_fetch_array($this->dbResult, MYSQL_ASSOC);
		else
			return mysql_fetch_object($this->dbResult);
	}
 
	function fill()
	{
		$object = $this->fetch();
		$numfields = mysql_num_fields($this->dbResult);
 
		// on récupère les noms des champs de la table
		for ($i = 0; $i < $numfields; $i++)
			$fieldname[$i] = mysql_field_name($this->dbResult, $i);
 
		for ($i = 0; $i < $numfields; $i++)
			$this->$fieldname[$i] = $object->$fieldname[$i];    // prob ?
	}
...
}
 
class Account extends DB
{
	var $uid;
	var $login;
	var $mail;
	var $pass;
	var $country;
	var $city;
	var $lastseen;
	var $ip;
 
	var $query;
 
	function Account($uid = 0)
	{
		$this->{get_parent_class($this)}();
 
		if ($uid) $this->load($uid);
	}
 
	function load($uid)
	{
		$this->query = sprintf('SELECT * FROM '.TBL_ACCOUNT.' WHERE uid=`%s`',
			$this->clean($uid));
 
		$this->fill();
	}
}
 
CREATE TABLE account (
  uid int(11) NOT NULL default '0',
  login varchar(15) NOT NULL default '',
  mail varchar(128) NOT NULL default '',
  pass varchar(32) NOT NULL default '',
  country varchar(32) NOT NULL default '',
  city varchar(32) NOT NULL default '',
  lastseen datetime NOT NULL default '0000-00-00 00:00:00',
  ip tinyint(20) NOT NULL default '0',
  PRIMARY KEY  (uid)
) TYPE=MyISAM;
 
$account = new Account(0);
echo $account->login.' from '.$account->country;
Vous avez donc ce qui nous intéresse de la classe DB, la classe Account dans son entiereté (pour le moment..), la structure de la table account, et ce que j'exécutes.

Pas d'erreurs, juste : "from".. Les membres de la classe Account sont donc vides. Pourtant, il me semble que $this->$fieldname[$i] = $object->$fieldname[$i]; est permis, non ?

Merci d'avance !!