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 :

POO PHP : getters ne fonctionnent pas [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 57
    Points : 27
    Points
    27
    Par défaut POO PHP : getters ne fonctionnent pas
    Bonjour à tous,

    une fois encore je me tourne vers vous pour un soucis de code, alors voilà : je m'entraîne à la poo en php cependant mes getters ne semblent pas fonctionner puisque je n'arrive pas à faire remonter les informations contenues dans ma base de données en les utilisant.

    Un exemple : $personnage->nom() devrait normalement me retourner le nom de mon personnage, hors je n'obtiens rien Une personne pour m'aider svp ?

    Voici la classe personnage

    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
    <?php
    class Personnage {
     
    	private $_id;
    	private $_nom;
    	private $_forcePerso;
    	private $_degats;
    	private $_niveau;
    	private $_experience;
     
    	/* Hydrater les objets
    	public function hydrate(array $donnees) {
    		
    		foreach ($donnees as $key => $value) {
    			$method = "set".ucfirst($key);
    			
    			if (method_exists($this, $method))
    				$this->$method($value);
    		}
    	}*/
     
    	// Les getters
     
    	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;
    	}
     
    	// Les setters
     
    	public function setId($id) {
     
    		$id = (int) $id;
     
    		if ($id > 0)
    			$this->_id = $id;
    	}
     
    	public function setNom($nom) {
     
    		if (ctype_alnum($nom))
    			$this->_nom = $nom;
    	}
     
    	public function setForce($forcePerso) {
     
    		$force = (int) $force;
     
    		if ($force >= 1 && $force <= 100)
    			$this->_force = $force;
    	}
     
    	public function setDegats($degats) {
     
    		$degats = (int) $degats;
     
    		if ($degats >= 0 && $degats <= 100)
    			$this->_degats = $degats;
    	}
     
    	public function setNiveau($niveau) {
     
    		$niveau = (int) $niveau;
     
    		if ($niveau >= 0 && $niveau <= 100)
    			$this->_niveau = $niveau;
    	}
     
    	public function setExperience($experience) {
     
    		$experience = (int) $experience;
     
    		if ($experience >= 1 && $experience <= 100)
    			$this->_experience = $experience;
    	}
    }
    ?>

    Et voici la page sur laquelle je l'appelle

    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
    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset =  utf-8>
    	</head>
     
    	<body>
    <?php
    include_once "../classes/chargementClasses.php";
     
    $db = new PDO("mysql:host=localhost;dbname=jeu", "root", "");
     
    $request = $db->query("SELECT nom, forcePerso FROM personnage");
     
    while ($donnees = $request->fetch(PDO::FETCH_ASSOC)) {
    	$perso = new Personnage($donnees);
     
    	echo "nom " , $perso->nom() , "<br>" ,  $perso->forcePerso();
    }
    ?>
     
    	</body>
    </html>
    Je vous remercie !

  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
    Ton hydratation est en commentaire donc tes variables ne sont jamais alimentés.
    Il te faut en plus le constructeur pour appeler l'hydratation.
    Pour finir, il manque un WHERE dans ta requête pour designer le personnage que tu veux.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 57
    Points : 27
    Points
    27
    Par défaut
    Merci de m'aider,

    l'hydratation est en commentaire parce que je voulais retourner des données déjà contenues dans la base.

    Par contre c'est vrai que je n'ai pas de constructeur mais qu'y mettre ? Cela ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public function __construct() {
    	self::hydrate();
    }

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 57
    Points : 27
    Points
    27
    Par défaut
    C'est bien le constructeur qu'il manquait !
    En faisant quelques essais j'ai fini par l'écrire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public function __construct(array $donnees) {
    	self::hydrate($donnees);
    }
    Et ça y est ça fonctionne ! Je vous remercie de m'avoir mis sur la voie

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

Discussions similaires

  1. [POO] le destructeur ne fonctionne pas
    Par oswalidos dans le forum C++
    Réponses: 8
    Dernier message: 25/10/2008, 10h46
  2. [MySQL] Session php qui ne fonctionne pas
    Par tiph02 dans le forum PHP & Base de données
    Réponses: 42
    Dernier message: 04/06/2008, 11h49
  3. [POO] Héritage qui ne fonctionne pas
    Par eexit dans le forum Langage
    Réponses: 11
    Dernier message: 07/05/2008, 15h58
  4. formulaire php qui ne fonctionne pas
    Par kate59 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/04/2008, 13h40
  5. Code php qui ne fonctionne pas
    Par bachir008 dans le forum Langage
    Réponses: 2
    Dernier message: 19/09/2007, 10h17

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