Probleme avec une methode recursive

cs_lowkey Messages postés 260 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 5 novembre 2010 - 30 mai 2008 à 21:45
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 1 juin 2008 à 09:41
Salut à tous !!

Voici ma methode d'une classe que je suis en train de créer. Il y a un seul attribur : $liste, en private.

public function afficheCategorie($idParent 0, $niveau 0)
  {
   $cnx = new Connexion;
   $cnx -> open();
   $listeCategories = "SELECT * FROM categorie WHERE id_parent=".$idParent." ORDER BY ordre";
   $lesCategories = mysql_query($listeCategories);
   if( mysql_num_rows($lesCategories) == 0 )
   {
    return false;
   }else
   {
    while( $l = mysql_fetch_object($lesCategories) )
    {
     for ($i=0;$i<($niveau*5);$i++)
     {
      $this -> liste .= "&amp;nbsp;";
     }
     $this -> liste .= $l -> titre."
";
     $niv = $niveau + 1;
     $this -> afficheCategorie( $l -> id, $niv);
    }
    echo $this -> liste;
   }
  }


Cette methode est cencée me créer une 'arborescence'.
Ma table categorie a comme champs : id, id_parent, texte

Normalement, je voudrais avoir ça :

Déco
     Vases
     Bougeoirs
     Tableaux
Art de la table
     Plats

Mais malheureusement, j'ai ça:

Déco
     Vases
     Bougeoirs
     Tableaux
Déco
     Vases
     Bougeoirs
     Tableaux
Art de la table
     Plats
Déco
     Vases
     Bougeoirs
     Tableaux
Art de la table
     Plats

C'est peu etre la fatigue, mais je n'arrive pas a trouver le probleme.

Si quelqu'un a une idée, ce serait vraiment simpa !!

Merci à tous par avance et bonne soirée !!

<hr />
lowke<sub>yhttp://s11.bitefight.fr/c.php?uid=45971</sub>

2 réponses

cs_lowkey Messages postés 260 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 5 novembre 2010 1
1 juin 2008 à 02:41
Personne ? Sujet pas assez explicite ?

<hr />
lowke<sub>yhttp://s11.bitefight.fr/c.php?uid=45971</sub>
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
1 juin 2008 à 09:41
Hello,

fais voir non pas la structure de ta table, mes les données qu'elle contient.
Sinon ton approche n'est pas bonne : tu te rends compte que tu ouvres 1 connexion db par récursion ? Ca fait bcp. Tu devrais au moins utiliser une variable statique pour ta connexion. Ou utiliser une classe qui fait du singleton, en l'occurrence (puisque c'est une classe).
0
Rejoignez-nous