Verkar lite komplicerat och oflexibelt det du gör här Gilles. Skulle det inte vara bättre att skapa din databastabell där varje rad har sitt eget kategori-id och ett förälder-id? dvs ge föräldrarna på översta nivån ett parent_id på 0 och barnen tar parent_id för deras förälders kategori_id. Detta skulle ge dig obegränsat djup och blir lättare att koda när du renderar trädet. Till exempel:
SQL för din första nivå av hierarki -
SELECT * FROM (your_table) WHERE parent_id=0
SQL för din andra nivå av hierarki -
SELECT * FROM (your_table) WHERE parent_id=(category_id of first level)
SQL för din tredje nivå av hierarki -
SELECT * FROM (your_table) WHERE parent_id=(category_id of second level)
och så vidare...