Partage
  • Partager sur Facebook
  • Partager sur Twitter

While dans une while

Sujet résolu
    19 février 2006 à 18:39:12

    Bonjour ,
    Etant donné que faire une boucle dans une boucle ne fonctionne pas chez moi ,j'aimerai trouver une autre solution .
    Mon but étant d'afficher un menu dynamique avec sous menus .
    Voici le code actuel :
    <?
    require('config.php') ;
    $typem = $_GET['typem'] ;
    if($typem == "gauche")
    {
    $querym  =        mysql_query("SELECT * FROM b77_menus WHERE section='1' AND status='1' ORDER BY position");
    $menu = '' ;
    while($Menu = mysql_fetch_array($querym))
            {
            $menu = $menu.'
            <table>
                    <tr>
                            <td class="MnuHaut">'
    .$Menu['nom'].'</td>
                    </tr> '
    ;
            $idmenu  =        $Menu['id'] ;
            $querys  =        mysql_query("SELECT * FROM b77_ssmenus WHERE menu='$idmenu' AND status='1' ORDER BY position") ;
                   
                    while($SSmenu = mysql_fetch_array($querys))
                    {
                    if($SSmenu['type'] = 1)
                    {
                    $smenu = '<a href="index.php?typep='.$SSmenu['id'].'>'.$SSmenu['nom'].'</a>' ;
                    }
                    elseif($SSmenu['type'] = 2)
                    {
                    $smenu = '<a href="'.$SSmenu['page'].'>'.$SSmenu['nom'].'</a>' ;
                    }
                    $menu = $menu.'
                    <tr>
                    <td class="MnuSS">'
    .$smenu.'</td>
                    </tr> '
    ;
                    }
                   
            $menu = $menu.'</table><br>' ;
            }
    echo $menu ;
    } ?>

    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      19 février 2006 à 18:42:29

      une requête dans un while ? C'est très, très mauvais ça !
      • Partager sur Facebook
      • Partager sur Twitter
        19 février 2006 à 19:57:50

        Justement je cherche une autre solution .
        • Partager sur Facebook
        • Partager sur Twitter
          19 février 2006 à 20:54:46

          Et comment qu'on fait cela ?
          • Partager sur Facebook
          • Partager sur Twitter
            19 février 2006 à 21:07:51

            salut,

            ca devrait donner un truc du genre :)

            SELECT * FROM b77_menus JOIN b77_ssmenus WHERE b77_menus.id = menu AND section='1' AND STATUS='1' ORDER BY position


            ainsi pour chaque menu tu as les sous menus qui suivent
            • Partager sur Facebook
            • Partager sur Twitter
              19 février 2006 à 21:45:57

              Merci mais coté php comment ca se passe ?

              Car pour avoir :
              Menu 1 :
              -Sous Menu 1
              -Sous Menu 2

              Menu 2 :
              -Sous Menu ...
              Il faudra bien une boucle aussi pour les menus ET les sous menus ,nan ?

              Voici les tables :
              b77_ssmenus :
              id
              menu
              type
              nom
              page
              position
              status

              b77_menus :

              id
              section
              nom
              position
              status
              • Partager sur Facebook
              • Partager sur Twitter
                20 février 2006 à 18:18:39

                Le code que tu nous as montré ci-haut ne fonctionnera très certainement jamais, lorsque l'on teste l'égalité, on place deux fois le symbole "=", chose que tu sais certainement mais que tu oublies parfois:
                                if($SSmenu['type'] = 1)
                                {
                                $smenu = '<a href="index.php?typep='.$SSmenu['id'].'>'.$SSmenu['nom'].'</a>' ;
                                }
                                elseif($SSmenu['type'] = 2)
                                {
                                $smenu = '<a href="'.$SSmenu['page'].'>'.$SSmenu['nom'].'</a>' ;
                                }


                Devient:

                                if($SSmenu['type'] == 1)
                                {
                                $smenu = '<a href="index.php?typep=' . $SSmenu['id'].'">'.$SSmenu['nom'] . '</a>' ;
                                }
                                elseif($SSmenu['type'] == 2)
                                {
                                $smenu = '<a href="' . $SSmenu['page'] . '">'.$SSmenu['nom'].'</a>' ;
                                }


                Il en est de même que tu n'avais pas fermer les guillemets de l'attribut href. Un autre conseil je peux donner, c'est de placer des espaces dans tes concaténations, c'est plus facile à lire ;)

                Sinon une boucle dans une autre n'est pas du tout une mauvaise solution, l'idée c'est d'être prudent: une boucle de 10 fois dans une de 10, ça fait 100 fois.
                • Partager sur Facebook
                • Partager sur Twitter
                  20 février 2006 à 18:30:18

                  Oui pour le égale unique j'ai tendance pour les valeurs numérique a ne mettre qu'un égal ,c'est un défaut a corriger .
                  Pour le href (concaténuation quand tu nous tient....) .
                  Pour l'histoire de boulces le soucis c'est que je voit pas d'autre solution pour avoir un menus avec sous-menus tel que :
                  Menu 1 :
                  -Sous Menu 1
                  -Sous Menu 2

                  Menu 2 :
                  -Sous Menu ...

                  Etant donné qu'il faudra une première boucle pour les "Menu 1","Menu 2" ,et une deuxième boucle pour les sous menus "Sous Menu 1","Sous Menu 2"

                  Merci déjà pour les tites corrections .
                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 février 2006 à 18:36:10

                    Moi je vois pas le problème ! :p C'est exactement de cette façon que je procédrais pour un menu dynamique.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      20 février 2006 à 19:01:27

                      Je vais donc testé ca ,j'en déduis qu'ici les jointure ne serviront à rien .
                      • Partager sur Facebook
                      • Partager sur Twitter

                      While dans une while

                      × 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