Não faremos os códigos de inserção alteração e exclusão de dados pos não é o objetivo desse artigo, popule sua tabela com dados.
Quando a tabela não for sub categoria de outra, mantenha o campo relação com o numero 0(zero), quando ela for subcategoria coloque o id da categoria pai no campo relacao.
Depois de popular a tabela, basta criar um arquivo php, fazer a conexão com o banco de dados e jogar o código abaixo:
<?php
ListaCategorias(0,'');
function ListaCategorias($Relacao,$Espaco){ $Busca = mysql_query("SELECT id,categoria FROM Categorias WHERE relacao=$Relacao"); if(mysql_num_rows($Busca)) while($Linha = mysql_fetch_row($Busca)){ echo $Espaco . $Linha[1] . '<br>'; ListaCategorias($Linha[0],$Espaco . ' '); } }