Bonjour à tous les zéros !

Je développe actuellement un site en utilisant le moteur de templates smarty

Mon problème viens du menu principale.
J'ai dans une base de donnés tous les titres de chaque menus et sous-menus.
Je souhaite avec des templates afficher le menu 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
16
17
18
19
20
 
<ul>
 <li>menu1
  <ul>
   <li>sous-menu1</li>
   <li>sous-menu2
    <ul>
     <li>sous-menu1</li>
     <li>sous-menu2</li>
    </ul>
   </li>
  </ul>
 </li> 
 <li>menu2
  <ul>
   <li>sous-menu1</li>
   <li>sous-menu2</li>
  </ul>
 </li>
</ul>
Le problème est que je ne connais pas à l'avance le nombre de niveau qu'il peut y avoir.
Voici le code php pour récupérer le menu :
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
 
function sous_menu($menu_pere,$oSmarty)
{
        $retour_sous_menu = mysql_query('SELECT * FROM menu WHERE id_menu_pere='.$menu_pere['id_menu'].' ORDER BY ordre_menu');
        while($donnee_sous_menu = mysql_fetch_array($retour_sous_menu))
        {
                $oSmarty->append('sous_menu', $donnee_sous_menu);
                if($donnee_sous_menu['nb_sous_menu']!=0)
                        sous_menu($donnee_sous_menu);
        }
}
 
$retour_menu_princ = mysql_query('SELECT * FROM menu WHERE id_menu_pere=0 ORDER BY ordre_menu');
while($donnee_menu_princ = mysql_fetch_array($retour_menu_princ))
{
        $oSmarty->append('donnee_menu', $donnee_menu_princ); 
        if($donnee_menu_princ['nb_sous_menu']!=0)
        {
                sous_menu($donnee_menu_princ,$oSmarty);
        }
}
$oSmarty->display('menu.tpl');
Merci d'avance pour vous réponse.

Droup