[PHP] Parcourir un tableau d'objet [Résolu/Fermé]

Signaler
Messages postés
7
Date d'inscription
samedi 9 juin 2012
Statut
Membre
Dernière intervention
23 juin 2012
-
Messages postés
7
Date d'inscription
samedi 9 juin 2012
Statut
Membre
Dernière intervention
23 juin 2012
-
Bonjour,

Tout est plus ou moins dans le titre, j'ai une classe article qui comprend 3 attributs l'id, le titre et la description. Ces informations sont stockées dans une base de données que je récupère à laide de ma requête SQL (voir code).
Je créé ensuite un nouvel objet avec les différentes informations récupérées dans la base pour ensuite les mettre dans un tableau appelé catalogue.

J'aimerais parcourir ce tableau afin de l'afficher sur ma page Web mais je ne trouve pas du tout comment faire =(

class Article{

private $id;
private $titre;
private $description;
//constructeurs
function __construct($id,$titre,$description){
$this->id=$id;
$this->titre=$titre;
$this->description=$description;
}
public function setId($id){
$this->id=$id;
}
public function getId(){
return $this->id;
}
public function setTitre($titre){
$this->titre=$titre;
}
public function getTitre(){
return $this->titre;
}
public function getDescription(){
return $this->description;
}
}
$sql = 'SELECT ID,Titre,Description FROM article';
$req = $bdd->query($sql);

while($donnees = $req->fetch())
{
$id = $donnees['ID'];
$titre = $donnees['Titre'];
$description = $donnees['Description'];



$art = new Article($id, $titre,$description);
$catalogue[] = $art;

}

Merci d'avance pour votre aide.


7 réponses

Messages postés
7
Date d'inscription
samedi 9 juin 2012
Statut
Membre
Dernière intervention
23 juin 2012
7
J'ai réussi à faire ce que je voulais, je vous donne ma solution qui pourrais servir à certaines personnes :

<?php

// classe de mon objet
class Article{

private $id;
private $titre;
private $description;
//constructeurs
function __construct($id,$titre,$description){
$this->id=$id;
$this->titre=$titre;
$this->description=$description;
}
public function setId($id){
$this->id=$id;
}
public function getId(){
return $this->id;
}
public function setTitre($titre){
$this->titre=$titre;
}
public function getTitre(){
return $this->titre;
}
public function getDescription(){
return $this->description;
}
}

$sql = 'SELECT ID,Titre,Description FROM article'; // je récupere dans ma base de données
$req = $bdd->query($sql);

while($donnees = $req->fetch()) // je met les infos dans un tableau
{
$id = $donnees['ID'];
$titre = $donnees['Titre'];
$description = $donnees['Description'];


$art = new Article($id, $titre,$description);
$catalogue[] = $art;


} // je parcours maintenant mon tableau pour l'afficher

?>
<table id="catalogue_films" >
<tr>
<th>ID</th>
<th>Titre</th>
<th>Description</th>
</tr>

<?php
foreach($catalogue as $article)
{ ?>
<tr>
<td><?php echo $article->getId().'<br/>';?></td>
<td><?php echo $article->getTitre().'<br/>';?></td>
<td><?php echo $article->getDescription().'<br/>';?></td>
<tr><?php
}
?>
</table>

Quelques notions de la POO que je n'avais pas tellement bien intégrer auparavant.

Merci à tous ceux qui m'ont aidé.
8
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
880
foreach($catalogue as $cle1=>$s_array){
	foreach($s_array as $cle2=>$value){
		echo 'le contenu de catalogue['.cle1.']['.$cle2.'] = '.$value.'<br />';
	}
}
Messages postés
277
Date d'inscription
vendredi 13 avril 2012
Statut
Membre
Dernière intervention
30 septembre 2012
28
Hello,

$catalogue[] = get_object_vars($art);
Messages postés
7
Date d'inscription
samedi 9 juin 2012
Statut
Membre
Dernière intervention
23 juin 2012
7
Salut,

j'ai remplacer $catalogue[] = $art; par la ligne que tu m'a donner mais quand je fait par exemple :

echo $catalogue[0];

cela m'affiche simplement "array"

Je ne vois pas comment faire ... =(
Messages postés
277
Date d'inscription
vendredi 13 avril 2012
Statut
Membre
Dernière intervention
30 septembre 2012
28
Tu vas avoir un array pareil:

$catalogue[0]['id'] = 12;
$catalogue[0]['titre'] = "titre de l'article";
$catalogue[0]['description'] = "ta description";

Si tu veux tester la valeur d'une variable n'echo jamais. Utilise var_dump($catalogue);

Encore mieux :
echo '<pre>';
var_dump($catalogue);
echo '</pre>';
Messages postés
7
Date d'inscription
samedi 9 juin 2012
Statut
Membre
Dernière intervention
23 juin 2012
7
Ah ok je vois mieux comment est mis mon tableau,

mais malgré plein de tentatives et recherche, je n'arrive pas à parcourir ce tableau four afficher les informations qu'il contient sur ma page ....

C'est forcément possible de le faire...
Messages postés
277
Date d'inscription
vendredi 13 avril 2012
Statut
Membre
Dernière intervention
30 septembre 2012
28
Par exemple:

<? foreach($catalogue as $article) : ?>
<h2><?=$article['titre']?></h2>
<p><?=$article['description']?></p>
<input type="hidden" name="id" value="<?=$article['id']?>">
<? endforeach ?>
Messages postés
7
Date d'inscription
samedi 9 juin 2012
Statut
Membre
Dernière intervention
23 juin 2012
7
En utilisant ceci :

$catalogue[] = get_object_vars($art);

echo '<pre>';
print_r($catalogue);
echo '<pre>';

var_dump($catalogue);

J'obtiens ceci :

Array
(
[0] => Array
(
)

[1] => Array
(
)

[2] => Array
(
)

[3] => Array
(
)

)

array
0 =>
array
empty
1 =>
array
empty
2 =>
array
empty
3 =>
array
empty



Ceci veut donc dire que mon tableau est vide ? j'ai l'impression de ne pas avancer tellement.

Mais merci beaucoup de votre aide en tout cas !