Hola,
Yo miraría un plugin para
jQuery como el propio
Treeview. En este caso tú podrías generar una lista HTML, y el plugin Treeview de jQuery se encargaría de todo... Por otro lado, supongo que existirán otros plugins. En todo caso, creo que el tema pasaría por el cliente, por JavaScript, tú desde PHP podrías dar salida a datos, incluso en algún formato predeterminado (JSON, XML), de forma que JavaScript se encargase de lo demás. A ver qué te parece el plugin Treeview que enlazo arriba. Tiene una pinta excelente.