travailler avec un tableau d'objets

Le problème exposé dans ce sujet a été résolu.

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.

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.

+1 -0

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.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

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