Partage
  • Partager sur Facebook
  • Partager sur Twitter

problème de boucle

Sujet résolu
    14 mai 2022 à 18:05:29

    Bonjour

    Déjà, je débute en programmation, je suis les cours php de Mathieu et Mikael, mais à mon niveau, je ne trouve pas de solution à mon problème (des heures que je cherche et fais des tests). Donc désolé si ma question semble évidente.

    Pour vous résumer la situation : Je veux afficher dans un tableau le nom tous les lieux d'une zone donnée ainsi que toutes les ressources PAR lieu.

    <!-- On récupère tout le contenu de la table Lieux-->
                        <?php
                        $sqlQuery = "SELECT * FROM `lieux` WHERE `zone_id` = :idzone ORDER BY `nom_lieu`";
                        $lieuxStatement = $dbAlandara->prepare($sqlQuery);
                        $lieuxStatement->execute(['idzone' => $idzone[0]]);
                        $lieux = $lieuxStatement->fetchAll();
    
    // On affiche chaque lieu un à un
                        foreach ($lieux as $lieu) {
                        ?>
                            <hr>
                            <table>
                                <tr>
    <!--Affichage du nom du lieu en cours--> <td><?php echo $lieu['nom_lieu'];?></td>
                                    <td><?php
    // On recherche toutes les ressources pour le lieu en cours                      
                                            $rchrss = "SELECT * FROM lieux
                                                    JOIN lieux_ressources ON lieux.id_lieu = lieux_ressources.lieu_id
                                                    JOIN ressources ON ressources.id_rss = lieux_ressources.rss_id
                                                    WHERE lieux.id_lieu = :lieu";
                                            $rssStatement = $dbAlandara->prepare($rchrss);
                                            $rssStatement->execute(['lieu' => $lieu['id_lieu']]);
                                            $rss = $rssStatement->fetch();
    
    //affichage de toutes les ressources pour le lieu en cours
                                        foreach ($rss as $rs) {
                                            echo $rs['nom_rss'].'</br>';
                                        } 
                                    ?></td>
                                </tr>
                            </table>
                        <?php
                        }
                        ?>



    Le nom du lieu s'affiche sans problème, le soucis vient de la deuxième boucle foreach. ça me sort un Warning: Illegal string offset 'nom_rss' sur la ligne 27


    j'utilise peut-être (certainement) mal foreach, peut-être y a-t-il un moyen plus adapté... Je ne sais pas, je suis à bout d'idées.


    Quelqu'un peut-il me venir en aide svp ?

    -
    Edité par KerstVry'Skar 14 mai 2022 à 18:10:39

    • Partager sur Facebook
    • Partager sur Twitter
      14 mai 2022 à 18:46:19

      Parce que tu as mis fetch au lieu de fetchAll ? Sinon c'est que le foreach est inutile.

      Mais la première requête est vraiment utile ? Parce qu'une requête dans une boucle, c'est tout sauf efficace.

      -
      Edité par julp 14 mai 2022 à 18:48:10

      • Partager sur Facebook
      • Partager sur Twitter
        14 mai 2022 à 18:48:02

        J'y crois pas ! c'était aussi simple que ça, mais quel boulet ! J'ai tout regardé sauf ça...

        Merci beaucoup julp, tu es mon sauveur du jour ^^

        • Partager sur Facebook
        • Partager sur Twitter
          14 mai 2022 à 19:33:01

          Bonjour,

          Sujet résolu

          Tu peux passer le sujet à "résolu" (bouton en haut à droite du sujet) et cliquer sur les pouces levés des messages qui t'ont aidé⋅e ;)
          • Partager sur Facebook
          • Partager sur Twitter

          problème de boucle

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown