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] Construire un tableau de manière récursive


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 132
    Points : 47
    Points
    47
    Par défaut [Tableaux] Construire un tableau de manière récursive
    bonjour,

    je dois ecrire une fonction recursive en php qui me permet a partir d'un tableau a plat de recreer le tableau de maniere recursive

    en fait , je gere une arborescence de referentiels , chaque referentiel contient des chapitres qui contiennet a leur tour des paragraphes, sous paragraphes etc a autant de nieaux que l'on souhaite

    donc par exempke dans mon cas j'ai mon tableau a plat comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    array ( 
     
    [3] =>  array (doc2, doc3, doc6),
     
    [5] => array (doc 23),
     
    [7] => array( doc 12, doc 13 , ....)
     
    );
    en fait la tout est a plat les ids 3, 5, 7 representent des chapitres referentiel et paragraphes apr exemple, sans aucune notion de hierarchie entre eux , leurs ids sont recuperes dans une table appelee "standards" et qui contient a palt la liste de tous les ref, chap, para etc

    ma fonction , je sais pas trop comment m'y prendre

    je sais que on doit parcourir chaque niveau et regarder ses fils et ensuite pour chaque niveau lui rattacher la liste de ses documents sachant je crois que si un niveau n'a pas de fils et pas de documents , alors je saiss pas trop quoi faire


    voila mon debut de fonction

    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
     
     
    function get_standards_tree($tab, $level, $cur_id){
     
        foreach($tab[$level] as $block){
    	//on explore les fils
    	$tmp= get_org($tab,$level+1,$block['childs']);
    	$block['documents']= $tab[$block['id_standard']][];
     
     
    	for($i=0;$i<$level;$i++)
     
    	}
       }
    		return $tmp;
    }
    merci d'avance de me guider

  2. #2
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 132
    Points : 47
    Points
    47
    Par défaut
    bonjour

    en fait mon message precedent n'est pas bon car ma fonction je dois lui passer deux tableaux

    un talbeau qui contient tous les ids de referentiel, chapitre , paragraphe etc a plat avec pour chacun d'eux le tableau des documents qui leur sont rattachés

    et un second tableau qui lui est hierarchique et organisé en niveaux donc on a

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
     
    array (
     
    [niveau 0]  =>  array ( et la on a le tableau de tous les referentiels car ils sont de niveau 0),
     
    [niveau 1] => array (la on a le tableau de tous les chapitres),
     
    etc
    et donc en fait dans ma fonction je dois parcourir le tableau hierarchique et regarger a chauqe niveau si il y a des documents rattachés et les rattacher



    merci d'avance si quelq'un arrive a me guider

    en gros j'ai un tableau donnat la hierachie au sein des standards et un donnant la liste des documents rattaches a un id et il me faut combiner les deux pour avoir en resultat un tableau qui donne la hierarchie plus les documetns rattaches

  3. #3
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    C'est pas très clair ton problème... obligé de relire plusieurs fois pour essayer de comprendre ce que tu tentes de nous expliquer

  4. #4
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 132
    Points : 47
    Points
    47
    Par défaut
    je sais j'ai du mal , mais je m'ameliore

    vous vous rapplez hier du tableau que j'ai construit qui pour chaque chapitre donne un second tableau contenant la liste de tous les documents appartenant a ce chapitre

    en fait hier je n'avais pas exposé tout le probleme car en fait dans ma base de données , je n'ai pas que des chapitres mais des referentiels aussi dans lesquels justement s'incrivent ces chapitres et les chapitres contiennt des paragraphes etc ...

    donc le tableau que j'ai construit a plat me donnait pour chaque referentiel, chapitre , paragraphe, le tableau des documents qui y sont rattachés

    mais ce tableau etant a plat, il n'y a pas la notion de hierarchie a l'interieur et donc je cree un autre tableau qui lui contient justement tous les elements de niveau 0 cad les referentiels, puis tous les elements de niveuau 1 cad les chapitres etc....qui met en evidence cette notion de hierachie

    mon but maintenant est de combiner ces deux tableaux et de les faire passer en parametre d'une fonction qui va construire de maniere recursive un tableau hierarchique (c pour cela pour creer le talbeua resultat j'ai besoin en premier lieu du tableau 1 hierachique)contenant pour chauqe niveau la liste des documents qui sont attachés (ces documents que je recupere grace au second tableau plat)

    ma fonction commence comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    function get_standards_tree($tab1, $tab2, $level, $cur_id){
     
    if(!isset($tab1[$level]))
    return "";
     
    foreach($tab1[$level] as $block){
         if($block['parent_id']==$cur_id || $cur_id==NULL)
    	for($i=0;$i<$level;$i++)
    	     $tmp = get_standards_tree($tab1, $tab2, $level+1,$block['id'],);

  5. #5
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Le tableau donné en exemple dans ton message #2, c'est toi qui le construit ?

  6. #6
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 132
    Points : 47
    Points
    47
    Par défaut
    oui c'est moi qui le construit

    masi j'ai edite mon message 4 et j'ai mis le debut de ma fonction

    le tou c'est de savoir comment je fais car je veux pour chaque niveau parcourir ses fils et regarger si ils contiennent des documents , si ou ije les rattache et si non je ne sais pas quoi faire

  7. #7
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Si par exemple on a la structure suivante :
    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
     
    + Referentiel 1 #5
    |   + Chapitre A #6
    |   |   + paragraphe #11
    |   |   ` paragraphe #12
    |   ` Chapitre B #7
    |       + paragraphe #13
    |       ` paragraphe #14
    ` Referentiel 2 #8
        + Chapitre C #9
        |   + paragraphe #15
        |   ` paragraphe #16
        ` Chapitre D #10
            + paragraphe #17
            ` paragraphe #18
    A quoi vont ressembler tes deux tableaux ?

    Est-ce que tu connais la profondeur max de ton arborescence ?

  8. #8
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 132
    Points : 47
    Points
    47
    Par défaut
    je narrive pas a ecrire mon code

  9. #9
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 132
    Points : 47
    Points
    47
    Par défaut
    voici la piece jointe
    Fichiers attachés Fichiers attachés

  10. #10
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Pour ton code, il ne faut pas utiliser des tabs comme tabulation, mais des espaces... Ce qui donne :

    ca c'est pour le tableau hierarchique
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    <?php 
     
    $tableau_hierarchique = array (
        [0] => array (
            [0] => 
             array (['id'] =>
              "1"
             ['nom'] =>
               "referentiel 1"
             ['niveau'] =>
             "0"
             ['id parent'] =>
                "NULL" 
             )
            [1] => 
             array (['id'] =>
              "2"
             ['nom'] =>
               "referentiel 2"
             ['niveau'] =>
             "0"
             ['id parent'] =>
                "NULL" 
             )
            )
     
        [1] => array ( 
          [0] => 
             array (['id'] =>
              "3"
             ['nom'] =>
               "chapitre A"
             ['niveau'] =>
             "1"
             ['id parent'] =>
                "1" 
             )
           [1] => 
             array (['id'] =>
              "4"
             ['nom'] =>
               "chapitre B"
             ['niveau'] =>
             "1"
             ['id parent'] =>
                "1" 
             )
           [2] => 
             array (['id'] =>
              "5"
             ['nom'] =>
               "chapitre C"
             ['niveau'] =>
             "1"
             ['id parent'] =>
                "2" 
             )
            [3] => 
             array (['id'] =>
              "6"
             ['nom'] =>
               "chapitre D"
             ['niveau'] =>
             "1"
             ['id parent'] =>
                "2" 
             )
            )
     
          [2] => et ainsi de suite avec les paragraphes on met le numero du chapitre parent l\id et le niveau qui est 2
     
    ?>
    pour le tableau a plat on a
    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
    34
    35
    36
    37
    <?php   
     
    $tableau a plat = array (
     
      [1] =>   //j'utilise les ids specifiés precemment donc ici l'id 1 fait reference au referentiel 1
         array ( [0] => numero doc  1
          [1] =>
          [2] =>
          [3] =>
          [4] =>
     
         )
     
      [2] =>   //refernetiel 2 car id = 2 il a 8 documents
         array ( [5] => numero doc  12   //ici j'aimerai bien corriger et remttre les ids a à a chaque fois mais je verrai ca apres si ca n'influe par ailleurs
          [6] =>
          [7] =>
          [8] =>
          [9] =>
          [10] =>
          [11] =>
          [12] =>
         )
     
       [3] =>   //l'id 3 est le chapitre A il a 6 documents 
       array ( [13] => numero doc  12   //ici j'aimerai bien corriger et remttre les ids a à a chaque fois mais je verrai ca apres si ca n'influe par ailleurs
        [14] =>
        [15] =>
        [16] =>
        [17] =>
        [18] =>
     
         )
       etc etc pour chaque id
     
     
       ?>

  11. #11
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    à chaque fois tu donnes la moitié des informations, c'est assez pénible.
    Pour moi, tu es trop ancré(e) dans une solution technique et ça va vite devenir une impasse. Je te propose de prendre un peu de recul sur ce que tu veux faire.

    Reprenons par le commancement.
    Tes données sont dans une bd j'imagine. Quel est le format des tables ?

  12. #12
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 132
    Points : 47
    Points
    47
    Par défaut
    euh le format? que voulez vous dire par la?

    en fait je n'avais pas donné toutes les infos car je croyais que on n'en a pas besoin pour ecire la fonction recursive...

    pour les talbles j'ai une table document

    une table standard qui contient les coonnes (id, libelle, concept, id parent)

    une table standard concept (id, label, niveau)

    sachant que

    niveau 0 c pour referentiel
    niveau 1 c pour chapitre
    et niveau 2 c pour pragraphe

    je ne pense pas avoir repondu a votre question

    ce que je sais c'est que ma fonction doit prendre en parametre les deux tableaux , le niveau courant et l'id courant

  13. #13
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    le format => le nom de la table plus le nom des colonnes.

    document(id, nom?)
    standard(id, libelle, concept, id_parent)
    standard_concept(id, label, niveau)

    C'est ça ? Si oui que contiennent chacunes de ces tables ? Un exemple ?
    Que signifi la colonne concept dans standard ?

  14. #14
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 132
    Points : 47
    Points
    47
    Par défaut
    document (numero , nom , standard )

    ex ( '1', document1, '3')

    standard ( 'id', 'label', 'concept', 'parent')

    ex

    ('3', 'introduction', '2', '1')

    standard concept ('id', 'label', niveau)

    ex

    ('2', chapitre, '1')

    et pour le chapitre 3 son parent est 1 et on a aussi dans

    standard ('1', ISO23, '1', NULL)

    avec dans standard concept ('1', referentiel, '0')

    mais dans la fonction recursive on n'a pas besoin de requete, c'est juste un parcours je crois , les reuqetes servent juste a construire les deux tableaux en parametre

  15. #15
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 132
    Points : 47
    Points
    47
    Par défaut
    en fait je veux m'inspirer du mem procede que cette fonction qui certes n'est qu'une fonction d'affichage mais elle fait un parcours recursilf

    <?php
    //////////////////////////////////////////////////////
    &#160;&#160;&#160;&#160;&#160;&#160;// Fonction get_org()
    &#160;&#160;&#160;&#160;&#160;&#160;//////////////////////////////////////////////////////
    &#160;&#160;&#160;&#160;&#160;&#160;//
    &#160;&#160;&#160;&#160;&#160;&#160;// Arguments :&#160;&#160;tab : tableau des données (organisées par niveau)
    &#160;&#160;&#160;&#160;&#160;&#160;//&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;level : niveau courant
    &#160;&#160;&#160;&#160;&#160;&#160;//&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cur_id : élément courant
    &#160;&#160;&#160;&#160;&#160;&#160;//&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;option : option d'affichage
    &#160;&#160;&#160;&#160;&#160;&#160;//&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;"option" -> liste de soptions pour une combobox
    &#160;&#160;&#160;&#160;&#160;&#160;//&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;défaut -> liste simple (tags ul li)
    &#160;&#160;&#160;&#160;&#160;&#160;//
    &#160;&#160;&#160;&#160;&#160;&#160;// Retour :&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;chaine de caractères destinées à l'affichage
    &#160;&#160;&#160;&#160;&#160;&#160;//
    &#160;&#160;&#160;&#160;&#160;&#160;// Description :&#160;&#160;la chaine de caractères renvoyées peut être
    &#160;&#160;&#160;&#160;&#160;&#160;//&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;immédiatement affichée
    &#160;&#160;&#160;&#160;&#160;&#160;//
    &#160;&#160;&#160;&#160;&#160;&#160;
    function get_org($tab, $level, $cur_id, $option){
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(!isset(
    $tab&#91;$level]))
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return
    "";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;switch(
    $option){
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;case
    'option' :
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(
    func_num_args()>4)
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    '<option value="0">'.func_get_arg(4).'</option>';
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;break;
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;default :
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;break;
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;foreach(
    $tab&#91;$level] as $block){
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    //var_dump($block); echo $cur_id."<hr />";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    if($block&#91;'parent_id']==$cur_id || $cur_id==NULL)
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;switch(
    $option){
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;case
    'option' :
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    $spaces = '';
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for(
    $i=0;$i<$level;$i++)
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    $spaces = "&nbsp;&nbsp;&nbsp;&nbsp;".$spaces;
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    $class = ' class="level_'.$level.' level"';
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    $tmp .= '
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<option value="'
    .$block&#91;'id'].'"'.$block&#91;'selected'].$class.'>'.$spaces.$block&#91;'name'].'</option>
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;'
    .get_org($tab,$level+1,$block&#91;'id'], $option);
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;break;
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;case
    'admin_list' :
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;default :
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    $class = ($level===0) ? ' class="chart"' : "";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    $tmp .= "
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<ul"
    .$class.">
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<li class=\"hide_minilinks \">
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;"
    .$block&#91;'name'].get_org($tab,$level+1,$block&#91;'id'],$option)."
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</li>
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</ul>"
    ;
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;break;
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return
    $tmp;
    &#160;&#160;&#160;&#160;&#160;&#160;}
    ?>
    Colorez votre code PHP sur les forums grâce à Developpez.com

  16. #16
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par eclipse012
    document (numero , nom , standard )

    ex ( '1', document1, '3')

    standard ( 'id', 'label', 'concept', 'parent')

    ex

    ('3', 'introduction', '2', '1')

    standard concept ('id', 'label', niveau)

    ex

    ('2', chapitre, '1')

    et pour le chapitre 3 son parent est 1 et on a aussi dans

    standard ('1', ISO23, '1', NULL)

    avec dans standard concept ('1', referentiel, '0')
    Alors tu as donné des exemples, est-ce que tu peux me construire l'arborescence correspondante à ces exemples ?

  17. #17
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 132
    Points : 47
    Points
    47
    Par défaut
    ben je vous l'ai donné concernant l'exemple que vous m'avez demande de construire, c'est exactement la meme chose sauf les noms changent et en plus des autres proprietes telles que id, nom, niveau , j'ai concept name aussi pour dire si c'est un referentiel, chapitre etc

  18. #18
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Ben justement comment je peux me referer à l'exemple si :
    - les ids ont changé
    - les noms ont changé

  19. #19
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 132
    Points : 47
    Points
    47
    Par défaut
    les ids sont les memes seuls les noms ont chagné mais supposez que vous ayez l'exemple que vous m'avez demande de construire avec les tableaux que j'ai construits avec cet exemple, vous n'avez pas une suggestion d'algorithme pour ma fonction? en fait ma fonction elle est génerale on peut lui donner des tableaux de n'importe quoi du moment qu'il y a une idee de hierarchie dans le projet

  20. #20
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    non, on ne peut pas proposer un algorithme générique, quand visiblement la schéma des tables est inhabituel.

    Je ne suis pas là pour entretenir un dialogue de sourd :
    - j'ai besoin d'aide
    - Pour que je puisse t'aider, répond à la question.
    - non je veux pas
    - aller, répond à la question
    - non je veux pas
    - ...

    Tu es ici parce que tu as un problème de conception. Nous sommes ici pour t'aider à résoudre ce problème. Or nous ne pouvons t'aider que si tu donnes assez d'indices.
    Personnelement, je n'ai pas assez d'information sur ton problème, donc je ne le comprend pas, donc je ne peux t'aider. (Maintenant ca peut venir de moi, et si quelqu'un d'autre a une illumination qu'il s'avance).
    Si tu ne veux pas répondre à mes questions, je me dis que finalement tu n'as pas besoin d'aide...

    Je fais plein d'efforts pour t'aider, tu n'en fais pas beaucoup pour m'aider à t'aider... assez démoralisant

    Allez dernière chance :
    Quelle est la hiérarchie correspondant aux exemples ci-dessous :
    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
    document (numero , nom , standard )
     
    ex ( '1', document1, '3')
     
    standard ( 'id', 'label', 'concept', 'parent')
     
    ex
     
    ('3', 'introduction', '2', '1')
     
    standard concept ('id', 'label', niveau)
     
    ex
     
    ('2', chapitre, '1')
     
    et pour le chapitre 3 son parent est 1 et on a aussi dans
     
    standard ('1', ISO23, '1', NULL)
     
    avec dans standard concept ('1', referentiel, '0')

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. création d'un tableau de manière récursive?
    Par maxwel56 dans le forum Langage
    Réponses: 7
    Dernier message: 17/05/2012, 13h54
  2. Réponses: 2
    Dernier message: 05/09/2008, 13h04
  3. Réponses: 4
    Dernier message: 29/02/2008, 17h14
  4. Réponses: 7
    Dernier message: 23/10/2006, 21h06
  5. [Tableaux] Construire un tableau compliqué
    Par Bomba dans le forum Langage
    Réponses: 5
    Dernier message: 08/06/2006, 16h38

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