En gros ton forum :
- une page qui liste les catégories ( categorie.php )
- une page qui liste les topics de cette catégorie (topic.php)
- une page qui liste les messages de ce topic(message.php)
- une page qui contiendra un formulaire pour ajouter ou répondre à un topic
En cliquant sur forum tu te diriges vers categorie.php.
Une simple requete Select pour reprendre les intitulés des catégories et l'id correspondant.
Tu mets un lien sur chacun des intitules du genre
<?php
echo '<a href="/forum/topic.php?categ='.$ArrayCategorie['id'].'">'.$ArrayCategorie['intitule'].'</a>';
?>
En arrivant sur ta page topic.php , tu récupères le paramètre en GET et tu t'en sers pour reprendre les topics liés à cette catégorie
<?php
$idCateg = $_GET['categ'];
$result=mysql_query('Select * from topic where id_categ ='.$idCateg.');
while($ArrayTopic=mysql_fetch_array($result))
{
echo '<a href="/forum/message.php?topic='.$ArrayTopic['id'].'">'.$ArrayTopic['intitule'].'</a>';
}
?>
Et tu fais la même chose pour les messages. C'est le principe pour la navigation dans ton forum.
Dans ta db tu dois lié une catégorie à plusieurs topic , eux-mêmes relié à plusieurs messages .
Donc pour chaque topic rajouté , tu aurais dans cet enregistrement l'id de la catégorie idem pour les messages qui auront l'id du topic.
categorie topic message
id id id
intitule id_categ id_topic
intitule contenu
C'est une vue très fortement simplifiée . La représentation de sous catégorie n'est pas exploitable de cette manière mais c'est toujours mieux de commencer par quelque chose de simple.