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 :

Fonctions récursive (3 niveaux)


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 2
    Par défaut Fonctions récursive (3 niveaux)
    Bonjour,

    J'essaye de créer un menu avec 3 niveaux en utilisant la fonction récursive pour mon menu arborescent. J'ai donc mon tableau qui est comme ceci :

    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    Array
    (
        [0] => Array
            (
                [id] => 1
                [parent] => 0
                [name] => Accueil
                [link] => #
                [position] => 1
                [active] => 1
            )
     
        [1] => Array
            (
                [id] => 2
                [parent] => 0
                [name] => Hebergement
                [link] => #
                [position] => 1
                [active] => 1
            )
     
        [2] => Array
            (
                [id] => 6
                [parent] => 0
                [name] => Script PHP
                [link] => #
                [position] => 1
                [active] => 1
            )
     
        [3] => Array
            (
                [id] => 3
                [parent] => 2
                [name] => Pack light
                [link] => #
                [position] => 1
                [active] => 1
            )
     
        [4] => Array
            (
                [id] => 4
                [parent] => 2
                [name] => Pack emeraude
                [link] => #
                [position] => 2
                [active] => 1
            )
     
        [5] => Array
            (
                [id] => 5
                [parent] => 2
                [name] => Pack rubis
                [link] => #
                [position] => 3
                [active] => 1
            )
     
        [6] => Array
            (
                [id] => 7
                [parent] => 6
                [name] => Radio shoutcast
                [link] => #
                [position] => 1
                [active] => 1
            )
     
        [7] => Array
            (
                [id] => 8
                [parent] => 7
                [name] => Support technique
                [link] => #
                [position] => 1
                [active] => 1
            )
     
        [8] => Array
            (
                [id] => 9
                [parent] => 8
                [name] => Acheter ce script
                [link] => #
                [position] => 1
                [active] => 1
            )
     
    )
    Voici ma fonction récursive :

    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
    public function afficher_menu($parent, $niveau, $array) 
    {
    	$html = "";
    	$niveau_precedent = 0;
     
    	foreach ($array AS $noeud) {
     
    		if ($parent == $noeud['parent']) {
     
    			if ($niveau == 0 && $niveau_precedent == 0) $html .= "<li class=\"dropdown\">\n";
     
    			if ($niveau_precedent < $niveau) $html .= "<ul class=\"dropdown-menu\">";
     
    			if ($noeud['parent'] != 0) $html .= "<li>";
     
    			$html .= "<a class=\"dropdown-toggle\" href=\"" . $noeud['link'] . "\">" . $noeud['name'] . "</a>";
     
    			if ($noeud['parent'] != 0) $html .= "</li>";
     
    			$niveau_precedent = $niveau;
     
    			$html .= $this->afficher_menu($noeud['id'], ($niveau + 3), $array);
     
    			if ($niveau == 0 && $niveau_precedent == 0) $html .= "</li>\n";
    		}
    	}
     
    	if (($niveau_precedent == $niveau) && ($niveau_precedent != 0)) $html .= "</ul>\n";
    	else if ($niveau_precedent == $niveau) $html .= "\n";
    	else $html .= "\n";
     
    	return $html;
     
    }
    ?>
    Je fait donc appelle a ma fonction comme ceci : afficher_menu(0, 0, $menu);

    Cela m'affiche bien mon menu (je le voit en code source) :

    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
     
    <li class="dropdown">
    	<a class="dropdown-toggle" href="#">
    	Accueil
    	</a>
    </li>
     
    <li class="dropdown">
    	<a class="dropdown-toggle" href="#">
    	Hébergement
    	</a>
    	<ul class="dropdown-menu">
    		<li><a href="#">Pack light</a></li>
    		<li><a href="#">Pack emeraude</a></li>
    		<li><a href="#">Pack rubis</a></li>
    	</ul>
    </li>
     
    <li class="dropdown">
    	<a class="dropdown-toggle" href="#">
    	Script PHP
    	</a>
    	<ul class="dropdown-menu">
    		<li><a href="#">Radio shoucast</a></li>
    		<ul class="dropdown-menu">
    			<li><a href="#">Support technique</a></li><!-- not visible -->
    			<ul class="dropdown-menu">
    				<li><a href="#">Acheter ce script</a></li><!-- not visible -->
    			</ul>
    		</ul>
    	</ul>
    </li>
    Par contre visuellement sur mon site il y'a le niveau 2 et niveau 3 qui ne s'affiche pas j'ai mis une information sur le code ci dessus : not visible pour informer de ce qui ne se voyez pas visuellement.

    J'aurai donc voulu savoir comment les afficher ? Y'a t'il un problème avec ma fonction récursive ?

    Merci pour vos futures réponses.

    Cordialement

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 713
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 713
    Par défaut
    Quand vous dites que ce n'est pas visible, vous parlez de l'affichage du rendu ou bien cela n'apparait pas dans le code source HTML ?

  3. #3
    Nb
    Nb est déconnecté
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 167
    Par défaut
    le html a l'air correct, faudrait voir le CSS ou le js s'il y en a qui joue sur l'affichage

  4. #4
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 2
    Par défaut
    Citation Envoyé par mathieu Voir le message
    Quand vous dites que ce n'est pas visible, vous parlez de l'affichage du rendu ou bien cela n'apparait pas dans le code source HTML ?
    Salut merci pour vos messages, dans le code source cela s'affiche mais sur le site non

    J'utilise ce template http://preview.oklerthemes.com/porto/4.7.0/ et donc dans l'exemple du template si on regarde dans features->headers->default->default cela fonctionne bien sa doit être ma fonction qui ne gère pas les niveaux 2 et 3 ?

    Cordialement

Discussions similaires

  1. fonction récursive: erreur
    Par calla29 dans le forum Débuter
    Réponses: 3
    Dernier message: 16/05/2006, 12h51
  2. [VB6] XML, fonction récursive de recherche
    Par kboo dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 24/04/2006, 22h27
  3. [XSLT] fonction récursive à N niveaux
    Par Mike35 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 10/03/2006, 13h30
  4. Fonction récursive renvoi sur page d'erreur
    Par peck dans le forum Langage
    Réponses: 1
    Dernier message: 23/12/2005, 11h08
  5. Problème de fonction récursive avec un TcxDBTreeList
    Par isachat666 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 05/12/2005, 14h12

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