IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Getter ramène résultat blanc mais requête OK


Sujet :

Langage PHP

  1. #1
    Membre actif
    Homme Profil pro
    Développeur
    Inscrit en
    Janvier 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2018
    Messages : 12
    Par défaut Getter ramène résultat blanc mais requête OK
    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 :
    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;
    		}
    	}
    ?>
    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
    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;
    		}
    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
    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>';
                  }
    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 ?

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 725
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 725
    Par défaut
    pour changer le nom de l'attribut retourné par la requête SQL, vous pouvez définir le nom comme cela :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT rd.libelle AS rang, ....

  3. #3
    Membre actif
    Homme Profil pro
    Développeur
    Inscrit en
    Janvier 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2018
    Messages : 12
    Par défaut
    Effectivement je suis bête parfois...

    Mais du coup je me demandais un truc, en faisant une jointure de la sorte dans mon SQL, mon objet User n’est pas purement un objet User comme il possède une valeur venant de Rang, n’y a t-Il pas moyen de retourner un objet Rang pour cet attribut la depuis mon objet User ?

    Donc dans le code faire MonUser -> Rang -> GetRang()

    Je trouverais ça plus propre, mais peut-être que ma méthode est tout aussi valable comme elle est avec la jointure ?

    J’ai rien trouver de tel dans mon bouquin et je vois pas trop comment faire pour le coup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comparer le résultat d'une requête
    Par VirginieGE dans le forum ASP
    Réponses: 3
    Dernier message: 10/08/2004, 15h15
  2. Arrondir le résultat d'une requête
    Par wautierp dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/06/2004, 11h56
  3. Résultat d'une requête dans une variable...
    Par Hoegaarden dans le forum Bases de données
    Réponses: 6
    Dernier message: 28/04/2004, 13h51
  4. Résultat d'une requète SQL
    Par camino dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/02/2004, 15h22
  5. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo