par
guilt92 » 02 sept. 2008, 16:35
Juste deux petits changement, après je ne peux plus

:
echo "<ul>";
foreach($rows as $val)
{
//on lance la fonction récursive dès que l'on a un parent niveau 0
if ($val["category_parent_id"] == 0) display_children($val, $rows, 0);
}
echo "</ul>";
function display_children($node, $rows, $num)
{
//on affiche le noeud que l'on traite
echo "<ul style='niv_" . $num . "' >";
echo "<li>";
echo " <a href='#'>" . $num . $node["category_name"] . "</a>";
echo "</li>";
//on récupère les enfants de ce noeud
$children = get_children($node["category_id"],$rows);
//si le noeud a des enfants
if(!empty($children))
{
$num++;
//on lance cette fonction d affichage pour chaque enfant
foreach($children as $s_node)
{
display_children($s_node,$rows, $num);
}
}
echo "</ul>";
}
function get_children($id,$rows)
{
//cette fonction renvoie tous les enfants d'un noeud donné
$children = array();
foreach($rows as $val)
{
if($val["category_parent_id"]== $id)
{
array_push($children,$val);
}
}
return $children;
}
Voila, je pense que c mieux de ne transmettre que l'id à la fonction get_children plutot que la totalité du tableau, vu que l'on utilise que l'id... Pour le reste faudra trouver plus compétent

Juste deux petits changement, après je ne peux plus :D :
[php]
echo "<ul>";
foreach($rows as $val)
{
//on lance la fonction récursive dès que l'on a un parent niveau 0
if ($val["category_parent_id"] == 0) display_children($val, $rows, 0);
}
echo "</ul>";
function display_children($node, $rows, $num)
{
//on affiche le noeud que l'on traite
echo "<ul style='niv_" . $num . "' >";
echo "<li>";
echo " <a href='#'>" . $num . $node["category_name"] . "</a>";
echo "</li>";
//on récupère les enfants de ce noeud
$children = get_children($node["category_id"],$rows);
//si le noeud a des enfants
if(!empty($children))
{
$num++;
//on lance cette fonction d affichage pour chaque enfant
foreach($children as $s_node)
{
display_children($s_node,$rows, $num);
}
}
echo "</ul>";
}
function get_children($id,$rows)
{
//cette fonction renvoie tous les enfants d'un noeud donné
$children = array();
foreach($rows as $val)
{
if($val["category_parent_id"]== $id)
{
array_push($children,$val);
}
}
return $children;
}[/php]
Voila, je pense que c mieux de ne transmettre que l'id à la fonction get_children plutot que la totalité du tableau, vu que l'on utilise que l'id... Pour le reste faudra trouver plus compétent ;)