Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1547 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  affichage tableau multidimension

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

affichage tableau multidimension

n°1281167
rdams
Posté le 11-01-2006 à 10:56:49  profilanswer
 

Bonjour,
 
j'affiche mon tableau multidimension de la façon suivante et je voudrais apporter quelques amélioration à l'affichage.

Code :
  1. function aff_tab($tab){
  2. print "<ul>";
  3. foreach($tab as $cle => $val){
  4.  $nb=count($val);
  5.  if( !is_array($val) ){
  6.   print "<li>$cle \t $val\n<br>";
  7.  }else{
  8.   print "<li>$cle $nb \n<br>";
  9.   aff_tab($val);
  10.  }
  11. }
  12. print "</ul>";
  13. }


 
je voudrais pouvoir afficher toute l'arborescence ou seulement une partie (comme pour les repertoires d'un DD) à l'aide d'un click sur l'élément pour étendre l'affichage d'une sous partie ou la réduire.
Je voudrais aussi afficher le nombre d'enfant qu'il y a au fond du tableau sur les branches de façon recursive.
les enfants corresponde au l'extremités des branches
 
exemple

Code :
  1. A (6 enfants)
  2. --B (2 enfants)
  3. ----a
  4. ----b
  5. --C (3 enfants)
  6. ----c
  7. ----d
  8. ----e
  9. --f (enfants lui meme)
  10. G (2 enfants)
  11. --H (2 enfants)
  12. ----i
  13. ----j


 
avez vous quelques idées sur la façon à procéder.
Merci


Message édité par rdams le 11-01-2006 à 14:27:39
mood
Publicité
Posté le 11-01-2006 à 10:56:49  profilanswer
 

n°1281201
anapajari
s/travail/glanding on hfr/gs;
Posté le 11-01-2006 à 11:50:05  profilanswer
 

2/3 trucs:
- qu'on soit bien d'accord quand tu parles de clique, cela sous entend que a chaque clique tu recharges ta page en relançant ton aff_tab avec le bon paramètre?  
- Je comprends pas ton calcul du nombre d'enfants. Pour Moi A à 3 enfants ( B,C,f ), et G un seul ( H). Ou alors tu comptes également les petits enfants mais à ce moment la A en a 8 ( B..f) et G 3 ( H,i,j)
- le code html généré est bancale, il manque les </li>

n°1281257
omega2
Posté le 11-01-2006 à 12:35:56  profilanswer
 

j'ai l'impression qu'il compte les extrémités de chaque branches.
En bref, b,c et h ne sont pas compté vu qu'ils ont eux même des enfants.
 
rdams > Pour ce que tu demandes, soit tu le fais en javascript (attention à bien gardé tout affiché par défaut avec le javascript qui cache ce qu'il faut une fois la page chargé) soit tu le fait en php mais en redemandant toute la page à chaque fois et à ce moment là, il faudra indiquer au script php ce qu'il doit afficher ou ce qu'il en doit pas afficher.

n°1281346
rdams
Posté le 11-01-2006 à 14:26:31  profilanswer
 

oui c'est ça les extremité de chaque branche.
il faudrait que sa fonctionne coté client donc en javascript  
je repost dans la rubrique javascript

n°1284315
rdams
Posté le 16-01-2006 à 10:23:25  profilanswer
 

personne ne peut m'aider?

n°1284350
omega2
Posté le 16-01-2006 à 11:22:33  profilanswer
 

Ben t'as fait quoi pour le moment pour cacher/afficher les différentes zones?

n°1284660
rdams
Posté le 16-01-2006 à 15:39:56  profilanswer
 

justement, je n'ai rien pour le mmoment et je ne connais pas les fonctions interne de javascript permettant de faire ceci.

n°1285253
rdams
Posté le 17-01-2006 à 09:27:16  profilanswer
 

J'ai trouvé ces fonctions en php et javascript me permettant de montrer ou cacher une partie de l'arbre.
 

Code :
  1. //fontion js permettant de montrer ou cacher les branches de l'arbre
  2. <script>
  3. function swap(elem){
  4. leparent = elem.parentNode;
  5. disp = 'none';
  6. if(elem.firstChild.innerHTML == '-'){
  7.  elem.firstChild.innerHTML = "+";
  8.  elem.lastChild.style.display = 'inline';
  9. }else{
  10.  elem.firstChild.innerHTML = "-";
  11.  elem.lastChild.style.display = 'none';
  12.  disp = 'block';
  13. }
  14. for(var i=1;i<leparent.childNodes.length;i++){
  15.  leparent.childNodes[i].style.display = disp;
  16. }
  17. }
  18. window.onload = function(){
  19. liens = document.getElementsByName('lesliens');
  20. for(var i=0;i<liens.length;i++) {
  21.  swap(liens[i]);
  22. }
  23. }
  24. </script>
  25. //fonction php permettant de parcourir le tableau récursivement
  26. <?php
  27. function affiche($tab){
  28. echo "<table border='1' cellpadding='0' cellspacing='0'>";
  29. $col="";
  30. foreach($tab as $key => $value)
  31. {
  32.  if($key!=''){
  33.   echo "<tr><td class='case' width='20'><img src='images/espaceur.gif' border='0' width='20'></td>";
  34.   echo "<td class='case' width='350'><a href='#' class='liens' name='lesliens' onclick='swap(this)'><span>-</span>&nbsp;",$key,"&nbsp;<span class='count'>(",is_array($value) ? count($value) : "1"," )</span></a>";
  35.  }
  36.  if(is_array($value)){
  37.             affiche($value);
  38.   if($key!=''){
  39.    echo "</td>";
  40.   }
  41.         }else{
  42.   echo "<td class='case' width='250'>&nbsp;".$value."</td>";
  43.   echo "</tr>";
  44.  }
  45. }
  46. echo"</table>";
  47. }
  48. ?>
  49. <!-- partie html permettant d'afficher le tableau à l'emplacement voulu et appel de la focntion php -->
  50. <table width="670" cellpadding="0" cellspacing="0" border="0">
  51. ....
  52. <tr><td align="left"><?php affiche($tab_id_entite); ?></td></tr>
  53. ....
  54. </table>


 
Je voudrais aussi afficher le nombre d'enfant qu'il y a au fond du tableau sur les branches (ou noeud) de façon recursive.  
les enfants correspondent aux extremités des branches  
 
merci


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  affichage tableau multidimension

 

Sujets relatifs
Retourner un tableau multi dimensionnel...pb tableau html dans mon site perso
Affichage 3DPb affichage 2 DIV un à coté de l'autre. Les CSS c'est chiant :D
Projet étudiant: Programme Affichage News et PopupDatagrid C# affichage dynamique de champs de texte
C# : affichage dynamique de champ de texteProbleme affichage liens CSS...
"parcours" tableau 2D[JAVA] probleme d'affichage caracteres spéciaux
Plus de sujets relatifs à : affichage tableau multidimension


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR