Compter les fils par niveaux dans un arbre ordonnée

paroleparleet Messages postés 2 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 18 novembre 2008 - 15 nov. 2008 à 19:13
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 19 nov. 2008 à 00:35
Bonsoir à tous,

J'aimerais que vous puissiez m'aider à resoudre un problème que j'ai rencontré dans mon projet.

je dois compter le nombre de fils par niveau dans un arbre ordonné: l'arbre se presente de la façon suivante,  avant de la presentée j'aimerais vous signifier que je me sert d'une base MySql pour traiter mes informations.

mon fichier se présente comme ceci:

table_element (id_element,code_element,nom_element,code_parent_element)

                                       1
                    /                  |            \
                 /                     |                  \
             /                         |                      \
         10                         11                       12
      /    |    \                  /    |     \           /        |     \
100  101 102        110   111  112    120  121  122

------

je vous prie de m'aider j'ai besoin de cela le plutôt possible.

3 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
15 nov. 2008 à 20:53
Salut

Quel est le resultat attendu ?
Il faut peut etre faire du parcours recursif?

Bon coding
0
paroleparleet Messages postés 2 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 18 novembre 2008
15 nov. 2008 à 21:24
Je vous remercie pour ta réponse.J'ai essayé la recurcivité mais je ne sais comment procéder pour afficher :

 Total : ........    Niveau :.......

Voici mon code qui me sert à afficher le contenu de ma base :

<?php
 #Paramétres de configuration


 $hostname = "localhost";
 $database = "test_arbre";
 $Username = "root";
 $password = "";


 $Dataconnection = mysql_connect($hostname, $Username, $password) or die(mysql_error());


 // paramétre mysql et chargement de la classe bdd.
mysql_select_db($database, $Dataconnection);


?>

<html>
<head>
<title>Document sans nom</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.label {
 font-family: "Trebuchet MS", "Tw Cen MT", "Tw Cen MT Condensed";
 font-weight: bold;
 color: #FFFFFF;
 font-size: small;
}
.label1 {
 font-family: "Trebuchet MS", "Tw Cen MT", "Tw Cen MT Condensed";
 font-weight: bold;
 color: #FF0000;
 font-size: small;
}
.label2 {
 font-family: "Trebuchet MS", "Tw Cen MT", "Tw Cen MT Condensed";
 font-weight: bold;
 color: #000000;
 font-size: small;
}
-->
</style>
</head>

<form name="forgotpass" method="post" action="">
         Selectionnez le Pseudo :,
                 <?
              $result=mysql_query("select nom_exemple
                                   from tab_exemple order by id_exemple",$Dataconnection);
              echo"<select name=\"usernam\">";
              while (list($affichage)=mysql_fetch_array($result)){
                echo"<option>$affichage</option>";
              }
              echo"</select>";
          ?>
      ,
       >" style=" BORDER-RIGHT: #999999 1px solid;
            BORDER-TOP: #999999 1px solid;
            FONT-SIZE: 11px;
            BACKGROUND: #336699;
            BORDER-LEFT: #999999 1px solid;
            COLOR: #cc3300;BORDER-BOTTOM: #999999 1px solid;
            FONT-FAMILY: Helvetica;
            TEXT-DECORATION: none">
      ,
   

 

</form>


<?php


     if(isset($_POST['afficher'])){


        $nom = $_POST['usernam'];


        $result_global=mysql_query("select code_exemple
                                    from tab_exemple
                                    where nom_exemple='$nom'"
                                  );
        list($code_depart)=mysql_fetch_array($result_global);
              
        echo"Code Pere : $code_depart
";


        affichage_branche($code_depart);


     }


    function affichage_branche($code_depart) {


       $niveau1 =0;


       $nbfils =0;


       $nbfils1 =0;
      
       $num1 =0;


       $result_query = mysql_query("select code_noeud,niveau_noeud
                                    from tab_noeud
                                    where parent_noeud='$code_depart'"
                                  );


       while (list($code,$niveau)=mysql_fetch_array($result_query)) {


         $num = mysql_num_rows($result_query);


         $tab=str_repeat(".",$niveau*4);
      
         echo "<li>".$tab."Code : ".$code." Nbre Fils : ".$num." Niveau :".$niveau;


         affichage_branche($code);


         $num1 = $num;


         $niveau1 = $niveau;


       }


       if($niveau1 == $niveau){}
       else{


           $tab=str_repeat(".",$niveau1*4);


           echo "
<li>$tab T Nbre Fils : ".$num1." Niveau :".$niveau1;
          
       }


    }


?>
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
19 nov. 2008 à 00:35
Hello,

une requête du genre :

SELECT c.code_element, count(*)
FROM codes
INNER JOIN codes c2 ON c2.code_element_parent = c.code_element
GROUP BY c.code_element
0
Rejoignez-nous