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 ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  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
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  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, 15h29
  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, 12h33
  3. Récupération de données dans mes fonctions
    Par sinifer dans le forum Langage
    Réponses: 12
    Dernier message: 09/07/2009, 10h35
  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, 20h04
  5. Réponses: 13
    Dernier message: 20/03/2003, 08h11

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