[Resolvido] Lista de categorias e subcategorias multi-nível
Eu pretendo criar uma lista de categorias e subcategorias multi-nível
Obs.: Possibilidade para infinitos níveis de subcategorias (ou pelo menos 3 níveis abaixo - rsrrs)
Tabela:
INSERT INTO categorias (id, nome, id_pai) VALUES
(1, 'Categoria pai', null),
(2, 'Categoria filho', 1),
(3, 'Subcategoria pai', 2),
(4, 'Subcategoria filho', 3),
(5, 'Subcategoria pai 2', 2),
(6, 'Subcategoria pai 3', 2),
(7, 'Subcategoria filho 2', 6);
Tentei:
select id, id_pai as pai, (select nome from categorias where id = pai) as nome_pai, nome
from categorias order by nome_pai, nome
E funciona para categoria e categoria pai, mas se for mais de três níveis aí já não exibe.
E lendo aqui:
Achei bem interessante essa:
SELECT f.id, f.nome, p.nome AS nome_filho, p.pid
FROM categoria f
LEFT JOIN categoria p
ON f.id = p.pid
Mas gostaria de fazer uma exibição multi-nível de categorias, independente de quantas forem as subcategorias, exemplo:
>
Categoria pai
-- Categoria filho
---- Subcategoria pai
------ Subcategoria filho
---- Subcategoria pai 2
---- Subcategoria pai 3
------ Subcategoria filho 2
Alguém pode me ajudar a fazer isso? Pensei, em último caso, se não for possível fazer de maneira otimizada, em criar diversos while (while dentro de while), chamando uma mesma função. Mas acho que é possível fazer com um único while tudo isso.
Como será que o Wordpress faz para exibir a lista de categorias e subcategorias multi-nível? Tentei até aproveitar as classes deles, mas me perdi muito nos arquivos.
Discussão (2)
Carregando comentários...