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] Affichage d'un tableau récursif


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 62
    Par défaut [Tableaux] Affichage d'un tableau récursif
    Bonjour,

    Voilà mon probleme est "simple" je n'arrive pas a afficher un tableau a plusieurs niveaux...
    Mon tableau est créer de cette façon :

    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
     
    function getSousGammes(&$arrayGammes,$idGammeParent){
    	if($idGammeParent == NULL){
    		$arraySousGammes = myGetAll("SELECT * FROM gammes WHERE gamme_parentId IS NULL");	
    	}else{
    		$arraySousGammes = myGetAll("SELECT * FROM gammes WHERE gamme_parentId=".$idGammeParent);	
    	}
    	foreach($arraySousGammes as $sousGamme){
    		echo "<li>".$sousGamme['gamme_nom']."</li>";
    		$sousGamme['sousGammes'] = array();
    getSousGammes($sousGamme['sousGammes'],$sousGamme['gamme_id']);
    		array_push($arrayGammes,$sousGamme);
    	}
    	echo "<li>".$sousGamme['gamme_nom']."</li>";
    }
    Et je voudrais pouvoir l'afficher en même temps que mon tableau soit créer...
    Mon souci c'est que je n'arrive pas a placer mes 'echo' au bon endroit de sorte que ça me génére un code html de ce 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
    <ul id="menu">
        <li><a href="#menu1">menu 1</a>
            <ul>
                <li><a href="#">élément 1</a></li>
                <li><a href="#">élément 2</a>
                    <ul>
                        <li><a href="#">élément 1</a></li>
     
                        <li><a href="#">élément 2</a></li>
                        <li><a href="#">élément 3</a>
                            <ul>
                                <li><a href="#">élément 1</a></li>
                                <li><a href="#">élément 2</a></li>
                                <li><a href="#">élément 3</a></li>
     
                            </ul>
                        </li>
                    </ul>
                </li> ...
    Si vous avez idée une quelconque idée... merci.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 62
    Par défaut
    En fait mon fonction ci-dessus, va me remplir mon tableau $arrayGammes, qui au final ressemblera à ça (exemple) :

    Code X : 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
    73
    74
    75
    Array
    (
        [0] => Array
            (
                [gamme_id] => 1
                [gamme_parentId] => 
                [gamme_nom] => Outils d'entretien
                [gamme_texteId] => 1
                [sousGammes] => Array
                    (
                        [0] => Array
                            (
                                [gamme_id] => 2
                                [gamme_parentId] => 1
                                [gamme_nom] => Robots
                                [gamme_texteId] => 2
                                [sousGammes] => Array
                                    (
                                        [0] => Array
                                            (
                                                [gamme_id] => 3
                                                [gamme_parentId] => 2
                                                [gamme_nom] => Balais
                                                [gamme_texteId] => 3
                                                [sousGammes] => Array
                                                    (
                                                    )
    
                                            )
    
                                        [1] => Array
                                            (
                                                [gamme_id] => 4
                                                [gamme_parentId] => 2
                                                [gamme_nom] => Objet
                                                [gamme_texteId] => 
                                                [sousGammes] => Array
                                                    (
                                                    )
    
                                            )
    
                                    )
    
                            )
    
                        [1] => Array
                            (
                                [gamme_id] => 6
                                [gamme_parentId] => 1
                                [gamme_nom] => Manuel
                                [gamme_texteId] => 
                                [sousGammes] => Array
                                    (
                                    )
    
                            )
    
                    )
    
            )
    
        [1] => Array
            (
                [gamme_id] => 5
                [gamme_parentId] => 
                [gamme_nom] => Ustensile
                [gamme_texteId] => 
                [sousGammes] => Array
                    (
                    )
    
            )
    
    )

    Je peux, peut-être, partir de ce tableau pour faire mon affichage ?
    J'ai besoin d'afficher les valeurs des champs 'gamme_nom' pour chaque tableau...

  3. #3
    Membre émérite
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Par défaut
    essaie voir, dis moi ce que ça donne

    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
    function arrayToList($tab) {
     
      $list = '<ul>';
     
      foreach ($tab as $elem) {
        $list .= '<li>' . $tab['gamme_nom'];
        if (count($tab['sousGammes']) > 0) {
          $list .= arrayToList($elem)
        }
        $list .= '</li>';
      }
     
      $list .= '</ul>';
     
      return $list;
     
    }

    pour afficher : echo arrayToList($arrayGammes);
    Dia [ Page DVP ] [ Site pro ]

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 62
    Par défaut
    Merci de d'être penché sur mon probleme, mais malheuresement ça ne marche pas (ça m'affiche deux 'li' vides...)

    Par contre j'ai également fait une fonction qui marche presque...
    Presque parceque le HTML généré n'est pas totalement correct, car en fait j'ai autant de 'ul' que de 'li' alors que les 'li' d'un même niveau devrait être dans le même 'ul' bien sur...

    Voilà le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function printSousGammes($arrayGammes){
    		foreach ($arrayGammes as $cle=>$gamme){
    			if(is_array($gamme)){
    				if(sizeof($gamme) > 0){
    					echo '<ul>';
    					printSousGammes($gamme);
    					echo '</ul>';
    				}
    			} else {
    				if($cle == 'gamme_nom')
    					echo '<li>'.$gamme.'</li>';
    			}
    		}
    	}
    une idée ?

Discussions similaires

  1. [Tableaux] affichage d'un tableau
    Par lynxxx dans le forum Langage
    Réponses: 16
    Dernier message: 13/04/2007, 11h26
  2. Réponses: 1
    Dernier message: 10/02/2007, 13h42
  3. [Tableaux] affichage d'un tableau
    Par patbeautifulday1 dans le forum Langage
    Réponses: 4
    Dernier message: 23/05/2006, 15h40
  4. Réponses: 3
    Dernier message: 24/02/2006, 10h22
  5. [Tableaux] Affichage d'un tableau multi-dimensionel
    Par rdams dans le forum Langage
    Réponses: 5
    Dernier message: 03/01/2006, 14h17

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