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
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>
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
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;
        }
    }
Classe "PetsGenre.php"
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";
}