Estructura de la tabla "categorias":
ID (INT) | nombre (TEXT) | parent_ID (INT)
Entonces para guardar una categoria utilizas:
Código MySQL :
INSERT INTO categorias(nombre, parent_ID) VALUES('Categoria', NULL)
Para agregar una subcategoria:
Código MySQL :
INSERT INTO categorias(nombre, parent_ID) VALUES('Subcategoria','1')
Para recuperar las categorias superiores:
Código MySQL :
SELECT * FROM categorias WHERE parent_ID IS NULL;
Para crear un "arbol" de las listas superiores e inferiores:
Código PHP :
$sql = mysql_query("SELECT * FROM categorias WHERE parent_ID IS NULL");
$parent = mysql_fetch_assoc($sql);
foreach ($parent as $p)
{
echo "<h2>{$p['nombre']}</h2><ul>";
$sql = mysql_query("SELECT * FROM categorias WHERE parent_ID = '{$p['ID']}'");
$child = mysql_fetch_assoc($sql);
foreach ($child as $c)
{
echo "<li>{$c['nombre']}</li>";
}
echo "</ul>";
}
Espero sea de ayuda!