Here's one I wrote earlier. I was experimenting with a bulletin board db with fields
id | message | user | msgtime | parentid
It out puts to table, indenting with blank cells as the level increases
function printMessage($mid,$level) {
$q1 = mysql_query("select message, user, msgtime from mybb where msgid=$mid");
list($message,$user,$msgtime)=mysql_fetch_row($q1);
echo "<table cellspacing=\"1\">\n";
if ($level > 0) /*set up columns*/
echo "<col width=\"100\" span=\"$level\">";
echo "<col width=\"100\"><col width=\"400\">";
echo "\n<tr>";
for ($i=0;$i<$level;$i++) { /*indent according to level*/
echo "<td> </td>";
}
/*print user, time and message*/
echo "\n<td bgcolor=\"#CCCCCC\" ><B>$user</B><br>$msgtime</td>\n";
echo "<td>$message</td></tr></table>\n";
mysql_free_result($q1);
/*now get any replies to the message and print, increasing level count */
$q2 = mysql_query("select msgid from mybb where parentid=$mid");
while ($row = mysql_fetch_array($q2)) {
printMessage($row["msgid"],$level+1);
}
mysql_free_result($q2);
}
hth