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 :Voici les différents messages d'erreurs que j'ai obtenu :
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 } }Le message ci dessous apparait après l'utilisation du pointeur "$this->"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)Comme vous l'avez compris cette classe est appellé lors d'un héritage.Fatal error: Cannot access empty property in C:\Program Files\xampp\htdocs\dossier\admin\mysql_fac_info.php on line 39
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.
Partager