Bonsoir tout le monde,
Je viens vers vous pour un petit soucis, voilà j'ai une classe User qui me ramène tous mes utilisateurs d'une base de donnée, jusque là aucuns problème tout fonctionne bien. Seulement, lorsque je souhaite faire un monUser -> GetSonRang, là je n'ai absolument rien qui s'affiche et impossible de savoir pourquoi, lorsque je fais un var_dump de mon objet avant de le retourner, et même après, et je vois bien que mon objet a bien tous les attributs que je veux.
Mais va savoir pourquoi, lorsque je fais un Get de l'élément que je veux, je n'ai absolument rien qui sort, et là je sèche complètement sur le pourquoi du comment...
L'exécution du SQL seul me retourne bien le résultat souhaité également.
Mon Objet :
Ma requête dans mon PDO :
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135 <?php class User { // Attributs private $erreurs = [], $id, $pseudo, $password, $rang, $mail, $avatar, $dateInscription; // Constantes pour les erreurs possibles const PSEUDO_INVALIDE = 1; const PASSWORD_INVALIDE = 2; const STATUT_BANNI = 3; const MAIL_INVALIDE = 4; const AVATAR_INVALIDE = 5; // Constructeur public function __construct($valeurs = []) { // Setter des valeurs si il y en a if (!empty($valeurs)) $this -> SetterAttributs($valeurs); } // Méthodes public function SetterAttributs($donnee) { foreach ($donnee as $attribut => $valeur) { $setter = 'Set'.ucfirst($attribut); if (is_callable([$this, $methode])) $this -> $methode($valeur); } } public function IsNew() { return empty($this -> id); } public function IsValid() { return !(empty($this -> pseudo) || empty($this -> password) || empty($this -> mail)); } // Setters public function SetPseudo($pseudo) { if (!is_string($pseudo) || empty($pseudo)) $this -> erreurs[] = self::PSEUDO_INVALIDE; else $this -> pseudo = $pseudo; } public function SetPassword($password) { if (!is_string($password) || empty($password)) $this -> erreurs[] = self::PASSWORD_INVALIDE; else $this -> password = $password; } public function SetRang($rang) { if ($rang == "BANNI") $this -> erreurs[] = self::STATUT_BANNI; else $this -> rang = $rang; } public function SetMail($mail) { if (!is_string($mail) || empty($mail)) $this -> erreurs[] = self::MAIL_INVALIDE; else $this -> mail = $mail; } public function setAvatar($avatar) { // Tous les tests pour vérifier qu'un avatar est correct (taille, extension, ...) } public function SetDateInscription($dateInscription) { $this -> dateInscription = $dateInscription; } // Getters public function GetId() { return $this -> id; } public function GetErreurs() { return $this -> erreurs; } public function GetPseudo() { return $this -> pseudo; } public function GetPassword() { return $this -> password; } public function GetRang() { return $this -> rang; } public function GetMail() { return $this -> mail; } public function GetAvatar() { return $this -> avatar; } public function GetDateInscription() { return $this -> dateInscription; } } ?>
C'est donc lorsque je souhaite faire un GetRang côté site que le soucis se situe
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 public function GetAllUsers($debut = -1, $limite = -1) { $requete = 'SELECT u.id, u.pseudo, rd.libelle FROM users u, references_detail rd WHERE rd.clef = u.rrang ORDER BY u.pseudo'; // Vérification des paramètres if ($debut != -1 || $limite != -1) $requete .= ' LIMIT '.(int) $limite.' OFFSET '.(int) $debut; $requete = $this -> db -> prepare($requete); $requete -> setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'User'); $requete -> execute(); $listeUsers = $requete -> fetchAll(); $requete -> closeCursor(); return $listeUsers; }
EDIT : J'ai remarquer que mon libellé que je souhaite affiché était stocké dans mon objet sous le nom que je récupère de ma deuxième table niveau SQL lié à ma table user, du coup j'ai remplacer mon attribut $rang par $libelle et j'ai bien le bon résultat, est-ce que c'est la bonne méthode de faire où je devrais plutôt créer un objet 'rang' dans mon objet User ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 foreach($manager -> GetAllUSers(0, 10) as $user) { echo ' <tr> <td>', $user -> GetId(),'</td> <td>', $user -> GetPseudo(),'</td> <td>', $user -> GetRang(),'</td> <td>Action</td> </tr>'; }





Répondre avec citation




Partager