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] Arborescence et liste imbriquée


Sujet :

Langage PHP

  1. #1
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut [Tableaux] Arborescence et liste imbriquée
    Bonjour à tous,
    J'essaie depuis un certains moment déjà de faire une arborescence à base de liste imbriquées mais la je craque ^^, je n'arrive pas au résultat que je souhaite.
    Les données de mon arborescence se présentent ainsi une fois extraite de la base :
    Array([id_pere]([idFils]=>nomFils)) , par exemple :
    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
     
    Array
    (
        [0] => Array
            (
                [1] => Local
                [4] => Internet
            )
     
        [1] => Array
            (
                [5] => Bureau
                [7] => Chambre
            )
     
        [5] => Array
            (
                [6] => Placard
            )
     
    )
    L'id 0 étant les groupes sans parent (je préfère 0 à null vu la gestion par tableau)

    J'ai ensuite une fonction qui me permet de "parser" mon tableau. En mode texte simple (saut de ligne et tabulation) pas de souçis l arbre s affiche correctement :
    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
     
    function build_tree($tree, $id) 
    {
    	static $profondeur = -1;
    	$profondeur++;
     
    	foreach ($tree[$id] as $idFils => $nomFils) 
    	{
    		//Nouveau groupe
    		$listgrp .= '<li class="closed"><a href="#" onclick="this.blur();return false;">'.utf8_encode($nomFils).'</a><ul>';
     
    		//Si un fils existe
    		if (is_array($tree[$idFils]))
    		{
    			build_tree($tree, $idFils);
    		}
    		else
    			$listgrp.=str_repeat('</ul></li>',$profondeur);
     
     
    	}
    	$profondeur--;
    }
    build_tree($tabGrp, 0);
    Mais en mode liste html , ce n'est plus la même chose
    Je n'arrive pas à réaliser cette structure :
    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
     
    <li class="closed"><a href="#" onclick="this.blur();return false;">Local</a>
    	<ul>
    		<li class="closed"><a href="#" onclick="this.blur();return false;">Bureau</a>
    			<ul>
    				<li class="closed"><a href="#" onclick="this.blur();return false;">Placard</a>
    					<ul>
    					</ul>
    				</li>
    			</ul>
    		</li>
    		<li class="closed"><a href="#" onclick="this.blur();return false;">Chambre</a>
    			<ul>
    			</ul>
    		</li>
    	</ul>
    <li class="closed"><a href="#" onclick="this.blur();return false;">Internet</a>
    	<ul>	
    	</ul>
    </li>
    Je n'obtiens que celle ci , où les profondeur ne sont pas toutes respectées :
    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
     
    <li class="closed"><a href="#" onclick="this.blur();return false;">Local</a>
    	<ul>
    		<li class="closed"><a href="#" onclick="this.blur();return false;">Prynel</a>
    			<ul>
    				<li class="closed"><a href="#" onclick="this.blur();return false;">Salle test</a>
    					<ul>
    					</ul>
    				</li>
    			</ul>
    		</li>
    		<li class="closed"><a href="#" onclick="this.blur();return false;">Média & sécurité</a>
    			<ul>
    			</ul>
    		</li>
    		<li class="closed"><a href="#" onclick="this.blur();return false;">Internet</a>
    			<ul>	
    			</ul>
    		</li>
    Si un oeil neuf pouvais m'aider car j'ai beau tourner le problème dans tous les sens il me manque toujours une balise quelque par
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #2
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    je ne vois pas bien à quoi te sert $profondeur dans ta fonction récursive...
    Et à quel endroit ajoutes-tu les balises ?

    Une fonction comme ça ne fonctionne pas ? :
    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
    function build_tree($tree, $id) 
    {
        $result = '<ul>';
        foreach ($tree[$id] as $idFils => $nomFils) 
        {
            //Nouveau groupe
            $result .= '<li class="closed"><a href="#" onclick="this.blur();return false;">'.utf8_encode($nomFils).'</a>';
     
            //Si un fils existe
            if (is_array($tree[$idFils]))
            {
                $result .= build_tree($tree, $idFils);
            }
     
            $listgrp .= '</li>';
        }
        $result .= '</ul>';
        return $result;
    }

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Merci de ta réponse.
    Dans l'idée c'était ca , la structure n'était pas encore la bonne mais ca m'a finalement débloqué
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Tableaux] Valeur vide Liste Déroulante
    Par ekinoxe dans le forum Langage
    Réponses: 1
    Dernier message: 03/12/2005, 19h47
  2. [Generics][Tableaux][Collections] Tableau liste entiers
    Par MyGoddess dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 04/11/2005, 12h44
  3. Présentation dans des listes imbriquées
    Par Ghusse dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 29/09/2005, 09h35
  4. [XHTML] Listes imbriquées valides ?
    Par Amon dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 23/09/2005, 23h05
  5. [CSS] listes imbriquées et conformité W3C
    Par rapathonyk dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 25/07/2005, 09h40

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