Arborescence pour un forum

Contenu du snippet

Ce code permet de faire simplement une arborescence pour un forum. Ce code a été trouvé sur www.phpfrance.com et je l'ai mis car il y en avait pas sur ce site.

Source / Exemple :


# Structure de la table

CREATE TABLE forum (
 id mediumint(9) NOT NULL auto_increment,
 id_parent mediumint(9) NOT NULL,
 titre varchar(64) NOT NULL,
 PRIMARY KEY (id)
); 
# Contenu de la table

INSERT INTO forum VALUES( '1', '0', 'test');
INSERT INTO forum VALUES( '2', '1', 'test2');
INSERT INTO forum VALUES( '3', '2', 'test3');
INSERT INTO forum VALUES( '4', '1', 'test4');

<? 
// connection
$bdd = mysql_connect("localhost","utilisateur","mot_passe");
mysql_select_db("forum", $bdd);

// selection des messages
$sql = "SELECT * from forum";
$aryResultatRequete = mysql_query($sql, $bdd);

// fonction récursive qui affiche les sous messages d'un message
function affiche_sous_msg($argMessagesFils,$argMessageId)
{
 if($aryMessages = $argMessagesFils[$argMessageId])
 {
  echo "<ul>";
  while(list(,$aryMessage) = each($aryMessages))
  {
   echo "<li>$aryMessage[titre]";
   affiche_sous_msg($argMessagesFils,$aryMessage[id]);
  }
  echo "</ul>";
 }
}

// rangement des messages
while($aryMessage = mysql_fetch_array($aryResultatRequete))
{
 $id_parent = $aryMessage[id_parent];
 // c'est le premier message de la discussion on l'ajoute dans le tableau des sujets
 if(!$id_parent) $aryMessagesSujets[] = $aryMessage; 
 // sinon on l'ajoute dans la teableau des messages fils
 else $aryMessagesFils[$id_parent][] = $aryMessage;
}

// affichage des messages
echo "<ul>";
while(list(,$arySujet) = each($aryMessagesSujets))
{
 echo "<li>$arySujet[titre]";
 // appel de la fonction récursive qui va afficher tous les sous messages
 affiche_sous_msg($aryMessagesFils,$arySujet[id]);
}
echo "</ul>";

// déconnection
mysql_close($bdd);

?>

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.