Bonjour,
Je fais un petit projet avec une architecture MVC. j'ai une base de donnée avec une table recettes (id, titre, description etc...), pour tester j'ai une seule ligne dans la table.
Quand je vais insérer d'autres lignes dans la table je voudrais générer des cards Bootstrap.
Dans le model :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
function getAll() {
            $req = "Select titre, description from recettes";
            $recettes = $this->bdd->query($req);
            $resultat = $recettes->fetch(PDO::FETCH_ASSOC);
            return $resultat;
}

Si j'utilise ce code dans la vue je n'ai pas de souci, j'ai une seule fois l'affichage de ma ligne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
<?php
        $recettes = $recettesController->getAllRecettes();
        foreach($recettes as $rec) {
            echo $rec;
        }
Mon problème est avec ce code(il boucle deux fois la même ligne donc j'ai un doublon) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<?php foreach($recettes as $rec) :?>
                <div class="col-md-3 mb-3">
                    <div class="card">
                        <div class="card-body">
                            <img class="card-img-top" src="..." alt="Card image cap">
                            <h5 class="card-title"><?= $recettes["titre"]?></h5>
                            <p class="card-text"><?= $recettes["description"]?> </p>
                            <a href="#" class="btn btn-primary">lire</a>
                        </div>
                    </div>
                </div>
<?php endforeach ; ?>
Quand je fais un j'ai bien une seul cle titre et une seule description. Je ne comprends pas pourquoi le premier code marche mais avec le deuxième j'ai ce doublon.
Mon autre question est :quand j'aurais plusieurs lignes est ce que il faut utiliser fetchAll eu lieu de fetch?
merci beaucoup désolé si mon post est trop long et si mes termes dans l'explication ne sont pas exactes en informatique.