IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Boucle while imbriquer [Archives]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2004
    Messages : 166
    Points : 123
    Points
    123
    Par défaut [Tableaux] Boucle while imbriquer
    Y a t il un myen en php de faire un nombre x de boucle while imbriquée.

    je m'explique: j'ai une variable x qui peut changé en fonction des utilisateurs.
    je voudrais realiser qqc de ce style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    //pour x=2
    while(...)
    {
      while(...)
      {
      }
    }
     
    //pour x=4
    while(...)
    {
      while(...)
      {
        while(...)
       {
         while(...)
         {
         }  
       }
      }
    }

  2. #2
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    la solution la plus simple je pense serait de faire du recursif.
    Tout énigme a une solution ! Tout est question de discipline !

  3. #3
    Invité
    Invité(e)
    Par défaut
    exact. tu mets une boucle while dans une fonction, et tu appelles cette fonction x fois

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2004
    Messages : 166
    Points : 123
    Points
    123
    Par défaut
    donc a priori ca serait faisable?

  5. #5
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Tout a fait, mais fait gaffe a ta condition d'arret pour l'appel recursif.
    Tout énigme a une solution ! Tout est question de discipline !

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2004
    Messages : 166
    Points : 123
    Points
    123
    Par défaut
    en fait
    je me rends compte
    que ca va pas etre simple du tout une fonction recursif pour ce que je veu faire.

    En faite j'ai des categories enregistrées dans une base de données. Chaque categorie est identifier par un identifiant et contient également l'identifiant de la categorie mere. Cette table contient donc une arborescence.

    Ce que je cherche a faire, c'est d'afficher cette arborescence correctement. J'ai deja commencé par créer une fonction qui me trouve le niveau d'arborescence le plus bas qui je pense doit etre necessaire pour afficher mon arborescence du type:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Sport
    |_Football
    | |_Insolite
    | |_Arbitre
    | |_France
    | | |_Equipe et joueurs
    | | |_Campionnat
    | | |  |_Saison 2004-2005
    | | |    |_Fetes
    | | |      |_14 juillet
    | | |_Amis
    | |_Allemagne
    |_Handball
    Musique
    |_Batterie
    |_Instrument a cordes
      |_Piano
      |_Guitare
    Le probleme c'est que je ne peux pas le faire a la main vu que des categories peuvent etre ajoutées dans la base de données.

  7. #7
    Membre averti Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Points : 402
    Points
    402
    Par défaut
    Les scripts qui listent des arborescences de répertoires devraient correpondre en partie à ce que tu souhaites faire...

    Règle n°1 du forum francophone : Parler le français...
    Pas de question technique par MP, le forum est fait pour çà, merci.

  8. #8
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Il est vrai que des scripts de gestion d'arborescence fleurissent un peu partout sur le net. Mais pour pour un peu plus d'information, pour moi, il y a deux types d'arborescences :

    liaison pere/fils : assez pratique je trouve quand il y a beaucoup de modification

    intervallaire : tres bien quand peu d'ajout, mais facilite grandement la lecture. Mais l'ajout est plus complexe.
    Tout énigme a une solution ! Tout est question de discipline !

  9. #9
    Membre averti Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Points : 402
    Points
    402
    Par défaut
    Oué donc le mieux, est qu'il code lui même sa fonction récursive, on en revient là, aller Le-Cortex faut mettre le pied d'dans une bonne fois pour toute

    Règle n°1 du forum francophone : Parler le français...
    Pas de question technique par MP, le forum est fait pour çà, merci.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 31
    Points : 29
    Points
    29
    Par défaut
    Peut-être un point de départ dans ce qui suit
    ATTENTION : c'est plutôt une trame, j'ai simplifié un bout de code que j'avais en l'adaptant. A ne pas utiliser tel quel !!!

    D'autre par, en fonction du nb d'enregistrement en base ca peut faire trop d'accès !!!

    l'arborescence descendant commence à partir de l'id_mere passé en parametre lors du premier appel ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    31
    32
    33
    // recuperation de l'arborescence des categories
    function enfant($id_mere)
    {
        global $categories;
        global $niveau_categorie;
     
        $niveau_categorie++;
        /*
        ...
        supposons ici une requete qui ramene toutes les categories filles de celles en cours
        sous forme d'un tableau correspondant aux enregistrements correspondant à une requete de type  
    "select * from categorie where id_mere = ".$id_mere;
        ...
      nom du tableau : 
     $allcategoriesByParentId 
        ...
        */
        while (list(,$categorie) = each($allcategoriesByParentId)) {
     
            $my_categorie_id = $categorie[id_categorie]; /**par exemple/
           
            /*rajouter eventuellement le niveau de la categorie*/
           $categorie["niveau"] = $niveau_categorie;
     
            /*ajout à la liste des catégories*/
            $categories[] = $categorie;
     
            /*ici la recursivité*/
            enfant($my_categorie_id);
        }
       /*redescendre d'un niveau*/
        $niveau_categorie = $niveau_categorie - 1;
    }
    Cette fonction n'a pas de retour, elle utilise une variable globale $catégories. Ce n'est evidemment pas l'idéal, il faut reprendre plutôt en retournant à chaque fois l'enregistrement répondant à une catégorie.

    Si ca peut aider ....

  11. #11
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 305
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 305
    Points : 15 633
    Points
    15 633
    Par défaut
    personnellement, je te conseille d'utiliser la représenation intervallaire. Tu auras besoin d'un peu plus de temps pour la mettre en place mais, une fois que ça sera fait, tu te demandera pourquoi tu ne l'a pas fait plus tot et tu l'utilisera pour tes prochains sites
    http://sqlpro.developpez.com/cours/arborescence/

  12. #12
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Au pire si tu as besoin de connaitre rapidement le pere d'un noeud. ce qui n'est pas forcement le plus pratique en intervallaire, tu peux tres bien melanger les deux.
    C'est a dire en plus des bornes tu indiques l'id du noeud pere. Et comme ca la recherche est beaucoup plus rapide.
    Tout énigme a une solution ! Tout est question de discipline !

Discussions similaires

  1. problème d'execution de 2 boucles while imbriquées
    Par missyos dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 17/03/2008, 14h01
  2. [MySQL] Boucle while imbriqué
    Par agbononamour dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 31/05/2007, 18h09
  3. [Tableaux] Boucle while + passer un tour
    Par Girzi dans le forum Langage
    Réponses: 12
    Dernier message: 28/06/2006, 10h41
  4. [Tableaux] boucle while qui ne boucle pas comme je veux
    Par oceane751 dans le forum Langage
    Réponses: 5
    Dernier message: 05/06/2006, 00h42
  5. [Tableaux] boucle while
    Par dafalri dans le forum Langage
    Réponses: 8
    Dernier message: 24/02/2006, 10h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo