Bonjour à tous
Je n'arrive pas à accéder à une valeur lue dans un tableau associatif venant d'un résultat de requête depuis une classe :
La requête retourne les bons résultats mais dans "index.php" la ligne $petsGenre->petGenre (ligne 9) envoie l'erreur "undefined property"...
Sauf erreur de ma part, l'on peut accéder aux valeurs d'un tableau associatif directement depuis la classe ... Si je déclare à null une variable "petGenre" dans sa classe respective il n'y a plus d'erreur mais la valeur n'est pas affichée dans le "echo" de la page index.php...
D'autre part, peut on factoriser et changer le mode de PDO fetch suivant les différents types de requêtes dans la fonction /Model.php/read() ?
Merci d'avance pour vos suggestions
index.php
Model.php
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 <body> <div class="container"> <h1>Interface gestion </h1> <h3>Categories et sous-categories d'animaux</h3> <p> <?php //$petsGenre->id = 3; $petsGenre->read("petgenre"); echo $petsGenre->petgenre ?> </p> </div> </body>
Classe "PetsGenre.php"
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 //Fonction lecture données d'une table public $id; public $table; public $idName; public function read($fields = null) { $bdd = self::getBdd(); if ($fields == null) { $fields = "*"; } //Requêtes différentes si aucun identifiant spécifié if ($this->id == null) { $sql = ("SELECT $fields FROM " . $this->table); echo 'Toute la table'; } else { $sql = ("SELECT $fields FROM " . $this->table . " WHERE " . $this->idName . " = " . $this->id); echo 'Un seul résultat'; } $data = $bdd->prepare($sql); $data->execute(); $data = $data->fetchAll(PDO::FETCH_ASSOC); echo '<pre>', print_r($data), '<pre>'; foreach ($data as $k => $v) { $this->$k = $v; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <?php class PetsGenres extends Model { var $table = "petsGenres"; var $idName = "idGenre"; }
Partager