fonction recursive - organigramme

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : fonction recursive - organigramme

Re: fonction recursive - organigramme

par moogli » 13 déc. 2012, 23:07

A quoi ressemble la fonction ?
Si tu passe en paramètre le tableau et que tu retourne $htmlorg ça doit aller.

@+

Re: fonction recursive - organigramme

par voodoonet » 13 déc. 2012, 12:57

Bonjour moogli,
Merci pour ta réponse.
Bon j'ai bien avancé, j'ai trouvé une classe pour l'affichage.
J'arrive bien a constituer mon tableau, par contre j'ai du mal a creer une fonction recursive pour le parcours de mon tableau.
Des que je transforme ca en fonction ca marche plus :(
Peux etre tu peux m'aider sur ca.?

Code : Tout sélectionner

foreach($orglist as $cle => $element) { $htmlorg.='<li>'; $htmlorg.= $cle; $htmlorg.='<ul>'; foreach($element as $cle2 => $element2) { if(is_array($orglist[$element2])) { $htmlorg.='<li>'.$element2.'<ul>'; foreach($orglist[$element2] as $cle3 => $element3) { if(is_array($orglist[$element3])) { $htmlorg.='<li>'.$element3.'<ul>'; foreach($orglist[$element3] as $cle4 => $element4) { if(is_array($orglist[$element4])) { $htmlorg.='<li>'.$element4.'<ul>'; foreach($orglist[$element4] as $cle5 => $element5) { $htmlorg.='<li>'.$element5.'</li>'; } $htmlorg.='</ul>'; } else $htmlorg.='<li>'.$element4.'</li>'; } $htmlorg.='</ul>'; } else $htmlorg.='<li>'.$element3.'</li>'; } $htmlorg.='</ul>'; } else $htmlorg.='<li>'.$element2.'</li>'; } $htmlorg.='</ul></li>'; } $htmlorg.= '</ul>';

Re: fonction recursive - organigramme

par moogli » 12 déc. 2012, 23:28

salut,


il faut que tu gère l'affichage, avec par exemple des tabulations pour avoir une démarque entre enfant et parent.

Perso j'utiliserais un paragraphe (balise p) avec une marge gauche pour le décaler du parent (qui a avoir aussi une discrète bordure à gauche pour marquer la chose).
=> donc ouverture du tag en première ligne de la fonction, fermeture avant la dernière }
Pour faire bien tu devrais d'abord compter le nombre d'enfant avant d'utiliser la récursivité.
Et limiter la récursivité afin de ne pas passer 30 minutes a afficher 200000 personnes ;)


@+

fonction recursive - organigramme

par voodoonet » 12 déc. 2012, 17:23

Bonjour,
Je cherche a faire un organigramme simpliste.
J'ai une table user qui possede un champ manager representant le n+1.
voila plusieurs heures que je me prends la tete avec ca sans en voir le bout.
J'ai essayé de faire une fonction mais ca ne me rend pas ce que je veux.

Code : Tout sélectionner

function getchild($manager,$site) { $dbconn =& pnDBGetConn(true); $sqlarb ="SELECT pn_uid,pn_name,pn_uname,pn_user_jobfunction,pn_user_dpt FROM pn_users where pn_user_manager='$manager' order by pn_uname ASC"; $resultarb =& $dbconn->Execute($sqlarb); //global $orglist; while (!$resultarb->EOF) { list($pn_uid,$pn_name,$pn_uname,$pn_user_jobfunction,$pn_user_dpt) = $resultarb->fields; echo $pn_uname; $orglist.=$pn_uname; $resultarb->MoveNext(); //$orglist.=$pn_uname.'-'; getchild($pn_uname,$site); echo '-'; }
J'appeles cette fonction en passant le nom du pdg pour qu'il me ramene tous les enfants...
mais ca marche pas, ca me renvoi bien les noms des enfants, mais a la queuleuleu, et je perds toute notion de rattachement au parent...

Quelqu'un a deja fait ce genre de chose?
merci d'avance,
VooDoo