a new table for each thread? not likely. ive written a few forums, one table for all threads / replies.
CREATE TABLE forum
(
post_id int unsigned not null auto_increment primary key,
post_type int,
user_id int,
title varchar(30),
post text,
post_date datetime
);
notice the post_type? what i do is set this to 0 if the post is a 'new' thread or set it to the post_id of the parent message if its a reply.
you could even extend this out a bit and make another field forum_type, you could then use this to create different forums for different subjects.
ie;
0 = general
1 = php discuss
2 = whatever
get the idea? im not real good at explaining this stuff, but i hope im helping. one thing i suggest is make sure you think your db structure out before you start coding. but yeah, even though allot of people say "why reinvent the wheel?" when it comes to forums, i think they are fun to make, and you can learn allot from doing one. once you get your head around the db structure, the actual coding is quite easy. and another bonus... once you've completed a forum, it will all of a sudden click on how to make a truely dynamic cms.