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 :

Fonction récursive qui me donne mal à la tête


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    Mars 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Auto entrepreneur
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2016
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Fonction récursive qui me donne mal à la tête
    Bonjour à tous et d'avance merci aux âmes charitables qui voudront bien m'éclairer.

    J'ai une table sql qui contient une généalogie typiquement ID / NOM / PARENT

    Jusqu'à là, rien de sorcier.

    Je souhaite mettre en forme avec des <UL> et des <LI> pour afficher mon arbre.

    La fonction que j'ai pondue est presque bonne car j'affiche correctement en HTML simple mais quand je demande au plugin jstree de l'affiche il refuse.

    Voila ce que me sort la fonction, l'affichage étant conforme aux infos de la base :

    Code html : 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
    <ul>
    1001001
    <li>
    1001002
    </li>
    <ul>
    <li>
    1001003
    </li>
    </ul>
    <ul>
    <li>
    1001004
    </li>
    </ul>
    <ul>
    <li>
    1001006
    </li>
    <ul>
    <li>
    1001008
    </li>
    </ul>
    </ul>
    <li>
    1001005
    </li>
    <ul>
    <li>
    1001007
    </li>
    </ul>
    </ul>


    Auriez vous une idée de l'endroit d'où vient l'erreur et comment y remédier ?

    D'avance merci,

    Franck

    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
    function display_tree ($id_distributeur, $niveau=0, $niveau_precedent = 0) {
     
    	if ($niveau==0) $html = "\n<ul>\n";
     
    	$requete2 = " SELECT * FROM distributeurs WHERE id ='$id_distributeur'";
    	$resultat_requete2 = mysql_query( $requete2 ) or die( mysql_error() ) ;	
    	$distr_en_cours = mysql_fetch_array($resultat_requete2); 
    	$id_distr_en_cours = $distr_en_cours[id];
     
    	if ($niveau==0)	$html = $html."\n".$id_distr_en_cours."\n";
     
    	$requete = " SELECT * FROM distributeurs WHERE id_parrain ='$id_distributeur'";
    	$resultat_requete = mysql_query( $requete ) or die( mysql_error() ) ;	
     
    	while ($filleul_en_cours = mysql_fetch_array($resultat_requete)) { 
     
    		$id_filleul_en_cours = $filleul_en_cours[id];
     
    		if ($niveau_precedent < $niveau) $html .= "\n<ul>\n";
     
    		$html = $html."\n<li>\n".$id_filleul_en_cours."\n</li>\n";
     
    		$html = $html.display_tree($id_filleul_en_cours, ($niveau+1), $niveau);
     
    		if ($niveau_precedent < $niveau) $html .= "\n</ul>\n";
     
    	};
     
     
    	if ($niveau==0) return $html."\n</ul>\n";
    	else return $html;
     
    }

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    La structure HTML correcte est plutôt :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <ul>
       <li>
          1001001
       </li>
       <li>
         1001002
       </li>
       <li>
          <ul>
             <li>
                1001003
            </li>
        </ul>
    </ul>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Candidat au Club
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    Mars 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Auto entrepreneur
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2016
    Messages : 2
    Points : 2
    Points
    2
    Par défaut La théorie
    Bonjour Sabotage,

    Merci pour ton retour.

    En fait la structure correcte qui devrait sortir est la suivante :

    Code html : 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
    <ul>
        <li>1001002
            <ul>
                <li>1001003</li>
                <li>1001004</li>
                <li>1001006
                    <ul>
                        <li>1008</l>
                    </ul>
                </li>
            </ul>
        </li>
        <li>1001005
            <ul>
                <li>1001007</li>
            </ul>
        </li>
    </ul>

    Je buche sur ma fonction mais là je recommence à zéro... si quelqu'un a une idée, je suis preneur.

    Merci

Discussions similaires

  1. Fonction récursive qui ne fonctionne pas
    Par Sadar007 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/09/2009, 17h24
  2. Réponses: 24
    Dernier message: 16/03/2009, 19h34
  3. Fonction récursive qui ne renvoie pas le résultat
    Par mathieugamin dans le forum Langage
    Réponses: 4
    Dernier message: 05/11/2007, 11h29
  4. Réponses: 4
    Dernier message: 20/09/2007, 02h50
  5. Réponses: 4
    Dernier message: 18/09/2007, 11h46

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