Intento armar un sistema de categorías y subcategorías infinitas en una
única tabla, pero tengo alguna falla en la función que arma el árbol de categorías.
La tabla que tengo es esta:
![](http://img507.imageshack.us/img507/9189/categoriasvf0.png)
Shot at 2007-07-23
y el php para armar el árbol es el siguiente: (disculpen la desproligidad del código, pero pienso acomodarlo una vez que de con la función correcta):
Código PHP:
<?
mysql_connect('localhost', 'root', '');
mysql_select_db('test');
function hijos($id_padre)
{
$sql = 'select * from categorias where id_padre = ('.$id_padre.')';
$rs = mysql_query($sql);
$cantidad_hijos = mysql_num_rows($rs);
if ($cantidad_hijos > 0)
{
while ($hijo = mysql_fetch_assoc($rs))
{
$hijos[$hijo['id']] = $hijo['nombre'];
}
return $hijos;
}
return false;
}
function mostrar_categoria($id_padre = 0)
{
$rs = mysql_query('select * from categorias where id_padre = ('.$id_padre.')');
while ($categoria = mysql_fetch_assoc($rs))
{
echo $categoria['id'].' - '.$categoria['nombre'].'<br>';
$hijos = hijos($categoria['id']);
if ($hijos)
{
foreach ($hijos as $clave => $valor)
{
echo $clave.' - '.$valor.'<br>';
mostrar_categoria($clave);
}
//echo 'tiene '.$hijos.' hijos';
}
echo '<hr>';
}
}
mostrar_categoria();
?>