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

PHP & Base de données Discussion :

Récupération de donnée en POO (fonction hydrate et construct)


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Juillet 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Collégien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Récupération de donnée en POO (fonction hydrate et construct)
    Bonjour à tous,

    présentement, j'essaye de créer une classe qui permettra d'afficher les données de ma base de donnée en POO. Par contre, je n'arrive pas à récupérer les données de ma base et je ne comprend pas pourquoi...

    je débute en PHP et surtout en POO...si quelqu'un a une solution se serait grandement apprécié

    voici mon code:

    l'appel à la connexion à ma base de donnée est complètement à la fin.

    Merci pour votre aide.

    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
    <?php 
    class Personnage{
      private $_id;
      private $_nom;
      private $_forceperso;
      private $_degats;
      private $_niveau;
      private $_experience;
     
      public function __construct(array $donnees){
        $this->hydrate($donnees);
      }
      public function hydrate(array $donnees){
      foreach ($donnees as $key => $value){
        // On récupère le nom du setter correspondant à l'attribut.
        $method = 'set'.ucfirst($key);
     
        // Si le setter correspondant existe.
        if (method_exists($this, $method)){
          // On appelle le setter.
          $this->$method($value);
        }
      }
    }
     
      public function id(){
        return $this->_id;
      }
      public function nom(){
        return $this->_nom;
      }
      public function forceperso(){
        return $this->_forceperso;
      }
     public function degats(){
      return $this->_degats;
     } 
     public function niveau(){
      return $this->_niveau;
     }
     public function experience(){
      return $this->_experience;
     }
     public function setId($id){
      $id = int($id);
      if ($id > 1){
        $this->_id = $id;
      }
     }
     public function setNom($nom){
      if(is_string($nom)){
        $this->_nom = $nom;
      }
     }
     public function setForceperso($forceperso){
      $forceperso = int($forceperso);
      if($forceperso >= 1 AND $forceperso <= 100){
        $this->_forceperso = $forceperso;
      }
     }
     public function setDegats($degats){
      $degats = int($degats);
      if ($degats >= 1 AND $degats <= 100){
        $this->_degats = $degats;
      }
     }
     public function setNiveau($niveau){
      $niveau = int($niveau);
      if ($niveau >= 1 AND $niveau <= 100){
        $this->_niveau = $niveau;
      }
     }
     public function setExperience($experience){
      $experience = int($experience);  
      if ($experience >= 1 AND $experience <= 100){
        $this->_experience = $experience;
       } 
     }
    }
    ?>
    <?php
    $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', 'root'); 
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $request = $bdd->query('SELECT * FROM personnages');
    while ($donnees = $request->fetch(PDO::FETCH_ASSOC)){
     // Chaque entrée sera récupérée et placée dans un array.
      // On passe les données (stockées dans un tableau) concernant le personnage au constructeur de la classe.
      // On admet que le constructeur de la classe appelle chaque setter pour assigner les valeurs qu'on lui a données aux attributs correspondants.
     
      $perso = new Personnage($donnees);    
      echo $perso->forceperso();
    }
    ?>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Deja ta requête lit tous les "personnages".
    Mais dans ta boucle, chaque $perso écrase le précédent, donc en sorti de boucle, tu n'as que le dernier personnages.
    Que veux-tu obtenir ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Juillet 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Collégien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    J'aimerais pouvoir afficher toutes les donnees une à la suite de l'autre. Présentement, rien ne s'affiche. Mais techniquement si ce que j'ai fait ecrase jusqu'au dernier personnage, je devrais être capable d'afficher au moins le dernier personnage? Qu'en pense-tu?

    Merci pour ta reponse à l'avance?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    En ajoutant un
    tu verras peut être ce qui coince dans la création de l'objet

  5. #5
    Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Juillet 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Collégien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Finalement, je n'avais pas activé mes messages d'erreurs avec MAMP...c'est pourquoi je ne voyais pas que j'avais de simple erreur de synthaxe notamment toutes mes variables int ($id) devait être comme sa: (int) $id.

    merci pour ton aide.

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

Discussions similaires

  1. [PHP 5.0] POO fonction hydrate
    Par Mordok dans le forum Langage
    Réponses: 8
    Dernier message: 20/04/2012, 16h29
  2. récupération des données de la fonction imread
    Par Adem84 dans le forum Images
    Réponses: 12
    Dernier message: 08/02/2010, 13h33
  3. Récupération de données dans mes fonctions
    Par sinifer dans le forum Langage
    Réponses: 12
    Dernier message: 09/07/2009, 11h35
  4. [MySQL] Problème de récupération des données dans une fonction
    Par highman dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/10/2006, 21h04
  5. Réponses: 13
    Dernier message: 20/03/2003, 09h11

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