Casi siempre existe un campo para determinar el orden en que aparecen las categorías y los foros, por ejemplo:
Código:
// Categorías
id_categoria - Numérico, auto incrementable
orden_categoria - Numérico
nombre_categoria - Varchar
// Foros
id_foro - Numérico, auto incrementable
id_categoria - Numérico
orden_foro - Numérico
nombre_foro - Varchar
descrip_foro - Text
Entonces, asignas números de acuerdo al orden en que deseas que aparezca cada cosa y tus consultas serían algo como:
Código:
// Categorías
SELECT * FROM categorias ORDER BY orden_categoria
// Foros
SELECT * FROM foros WHERE categoria = 1 ORDER BY orden_foro
Te sugiero revisar códigos y estructuras de tablas de otros sistemas de foros como PhpBB, FluxBB, etc., para que veas cómo lo hacen y tomar ideas de ahí para aplicarlas en tu proyecto.