יש לי דרך מאד פשוטה ...
אבל אני לא בטוח שהכי טובה ... עם רקורסיה ! למעשה כתבתי כזה קוד די מזמן, אולי הוא יעזור לך :
<? $numPosts=0; function tree($id,$count) { global $numPosts; $sql=mysql_query("SELECT user,id,title FROM tree WHERE parent=".$id." ORDER by id DESC"); if (mysql_num_rows($sql) >0) { $count++; while ($ligne=mysql_fetch_array($sql)) { $numPosts++; for ($i=1;$i<=$count;$i++) { echo " "; } echo "<span><b>".(htmlspecialchars($ligne['user']))."</b></span> : <a href='javascript: showPost(".$numPosts.")'>".(htmlspecialchars($ligne['title']))."</a> <a href='javascript:reply(".$ligne['id'].");'><b>R</b></a><span id='".$numPosts."'></span><br />"; tree($ligne['id'],$count); } } else { $count--; } } echo "<font size='3'><a href='javascript:reply(1);' class='s'>New Topic</a></font><br/>"; tree(1,-1); ?>
וכמובן
mysql_query("CREATE TABLE `tree` ( `id` smallint(5) unsigned NOT NULL auto_increment PRIMARY KEY, `title` varchar(40) NOT NULL default '', `parent` smallint(5) unsigned NOT NULL, `body` text NOT NULL, `user` varchar(15) NOT NULL default 'Guest' )") or die(mysql_error()."1");