Bonjour je me présente au passage je suis Stéphane, étudiant en BTS Informatique de Gestion option Developpeur d'Application.

Je suis codeur C# au départ mais là je m'improvise codeur PHP pour mon stage.

Je travaille actuellement en PHP 5, je retraduirais mon code en PHP 4 pour des raisons internes à l'entreprise.

J'essaye actuellement d'aborder les classes en PHP. J'ai souvent des problèmes dues à des propriétés dans mes classes dites empty.
Je ne comprend pas puisque mon constructeur affecte toutes les propriétés.

Ci dessous je vous montre mon code :
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
/*******************************************
********************************************
********************************************
Cette classe est appellé par une autre classe par le biais d'un héritage.
********************************************
********************************************
*******************************************/
class mysql_fac_info
{
	protected $db_srv;
	protected $db_port;
	protected $db_login;
	protected $db_password;
	protected $db_name;
 
	protected function mysql_fac_info($chosen_db)
	{
		// Début
		switch ($chosen_db)
		{
			// Paramètres de connexion 1
			case "lyo" : $db_srv="";/*$lyo_db_srv =*/
						 $db_port="";/*$lyo_db_port =*/
						 $db_login="";/*$lyo_db_login =*/
						 $db_password="";/*$lyo_db_password=*/
						 $db_name="";break;/*$lyo_db_name =*/
			// Paramètres de connexion 2
 
			case "crm" : $db_srv="";/*$crm_db_srv =*/
						 $db_port="";/*$crm_db_port =*/
						 $db_login="";/*$crm_db_login =*/
						 $db_password="";/*$crm_db_password =*/
						 $db_name="";break;/*$crm_db_name =*/
			// Paramètres de connexion 3
 
			case "fac" : $db_srv="localhost";/*$fac_db_srv =*/
						 $db_port="3306";/*$fac_db_port =*/
						 $db_login="root";/*$fac_db_login =*/
						 $db_password="";/*$fac_db_password =*/
						 $db_name="db_facturation_percallXV";break;/*$fac_db_name =*/
			default : exit("Erreur de selection"); break;
		}		
		// Fin
	}
 
	protected function connect($query)
	{
		mysql_connect($db_srv.":".$db_port,$db_login,$db_password)
		or die (mysql_error());
		mysql_select_db($db_name)
		or die (mysql_error());
		$result=mysql_query($query)
		or die (mysql_error());
		mysql_close();
		$result2 = mysql_fetch_array($result);
		return ($result2);
	}
 
}
 
class mysql extends mysql_fac_info
{
	// Propriétés
	private $requete;
	// Méthodes
 
	// Constructeurs	
 
	public function mysql($chosen_db, $request)
	{
		// Début		
		$this->mysql_fac_info($chosen_db);
		$requete=$this->list_of_request($request);
		// Fin
	}
 
	// Autres Méthodes
 
	protected function list_of_request($request)
	{
		switch ($request)
		{
			case "can_login" :  $requete = 'SELECT * FROM * WHERE';break;
			case "can_access_panel" :  $requete = 'SELECT * FROM * *, * * WHERE *=* AND * = (
		SELECT * FROM * WHERE * =*")';break;
			default : exit; break;
 
		}
	}
 
	public function username_login($username,$password)
	{
		// Début
		$requete=$requete.' users_name="'.$username.'" users_password"'.$password.'"';
		return($this->connect($requete));
		// Fin
	}
 
	public function return_query()
	{
		// Début
		$result=$this->connect($this->$requete);
		$final_result = mysql_fetch_array($result);
		return ($final_result);
		// Fin
	}
}
Voici les différents messages d'erreurs que j'ai obtenu :
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\Program Files\xampp\htdocs\dossier\admin\mysql_fac_info.php on line 51
Access denied for user 'ODBC'@'localhost' (using password: NO)
Le message ci dessous apparait après l'utilisation du pointeur "$this->"
Fatal error: Cannot access empty property in C:\Program Files\xampp\htdocs\dossier\admin\mysql_fac_info.php on line 39
Comme vous l'avez compris cette classe est appellé lors d'un héritage.

La première classe assure la connexion à trois bases de données différentes, la deuxième classe assure toute la gestion des requêtes.
Dites moi si je me trompe, mais puisque je fais hériter une classe à une autre je devrais avoir tous les accès que je souhaite sur elle y compris les valeurs contenues dans les propriétés.

Cependant bien que mon constructeur dans cette classe mysql_info affecte les différentes informations aux variables, je ne peux avoir accès à celles ci dès que je lance ma méthode connect(), on dirait presque que mon constructeur n'affecte en fait aucune variable.

Si il y a une notion que je n'ai pas compris, dites le moi car là j'avoue je sèche.

Merci à vous d'avance
En espérant vous avoir donné toutes les informations que vous souhaitez.