travailler avec un tableau d'objets

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour à tous,

Question: Comment fait-on en php afficher une liste d'objets?

J'ai une methode de base de donnée qui récupère une liste d'objets.

1
2
3
4
5
6
7
public function afficherEnListe($objet, $parametre){
        $table = strtolower(get_class($objet));
        $req = $this->bdd->prepare('SELECT * FROM '.$table.' WHERE '.$parametre);
        $req->execute();
        $res = $req->fetchall(PDO::FETCH_OBJ);
        return $res;
    }

J'aimerai par la suite afficher cette liste via une autre fonction:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$parametre = 'idCondominio = "'.$_SESSION['objcondominio']->getid().'"';
$liste = $bdd->afficherEnListe($unidade, $parametre);

echo '<pre>';
print_r($liste);
echo '</pre>';

foreach($liste as $key => $value){  
    echo $liste[$key]->getid();
}

Sachant que $liste[$key] devrait apartenir à la class "Unidade" où est definie la methode getid();

erreur: Fatal error: Call to undefined method stdClass::getid() in C:\wamp\www\condominio\formulaires\listeunidade.php on line 24;

resultat du print_r:

 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
Array
(
    [0] => stdClass Object
        (
            [id] => 23
            [idCondominio] => 12
            [nom] => ILha bella 001
            [resp] => 0
            [statut] => alugado
        )

    [1] => stdClass Object
        (
            [id] => 24
            [idCondominio] => 12
            [nom] => ILha bella 002
            [resp] => 0
            [statut] => 
        )

    [2] => stdClass Object
        (
            [id] => 25
            [idCondominio] => 12
            [nom] => ILha bella 003
            [resp] => 0
            [statut] => 
        )

)

J'espère que ce n'est pas trop confus .. merci pour votre aide.

+0 -0

Cette réponse a aidé l'auteur du sujet

En effet, tu récupères des objets stdclass donc ils n'ont pas de méthodes, uniquement des propriétés publiques. Ou alors, tu as oublié de préciser le nom de la classe à instancier pour chaque ligne de résultat en 2e paramètre du fetchAll.

Édité par vibrice

+1 -0
Staff

Cette réponse a aidé l'auteur du sujet

En effet, tu récupères des objets stdclass donc ils n'ont pas de méthodes, uniquement des propriétés publiques. Ou alors, tu as oublié de préciser le nom de la classe à instancier pour chaque ligne de résultat en 2e paramètre du fetchAll.

vibrice

Pour fournir un nom de classe, il faut utiliser FETCH_CLASS plutôt que FETCH_OBJ.

+1 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte