一个简洁的多级别论坛
本论坛总共用了不到200行代码,执行速度相当快。运行例子在:http://www.hnpts.ha.cn/forum
MYSQL数据库:yxforum
+-------+--------------+------+-----+---------+----------------+ 
| Field | Type         | Null | Key | Default | Extra          | 
+-------+--------------+------+-----+---------+----------------+ 
| id    | int(11)      |      | PRI | 0       | auto_increment | 
| dt    | datetime     | YES  |     | NULL    |                | 
| tp    | varchar(255) | YES  |     | NULL    |                | 
| ct    | text         | YES  |     | NULL    |                | 
| fl    | int(11)      | YES  |     | NULL    |                | 
| ip    | varchar(20)  | YES  |     | NULL    |                | 
| un    | varchar(50)  | YES  |     | NULL    |                | 
| em    | varchar(60)  | YES  |     | NULL    |                | 
| num   | int(11)      | YES  |     | NULL    |                | 
+-------+--------------+------+-----+---------+----------------+ 

index.php: 

<html> 
<head> 
<style type="text/css"> 

<!-- 
.unnamed1 {  font-size: 9pt; font-family: "宋体"} 
.unnamed1 A {COLOR: #000088; FONT-SIZE: 9pt; TEXT-DECORATION: none; TEXT-TRANSFORM: none; font-family: "宋体"} 
.unnamed1 A:hover {COLOR: #880000; FONT-SIZE: 9pt; TEXT-DECORATION: underline overline; font-family: "楷体_GB2312"} 
.unnamed2 {  font-size: 12px; color: #9933FF} 

--> 

</style> 
</head> 
<body bgcolor="#FFFFFF" text="#000000" link="#000066" vlink="#0000CC" alink="#000099"> 
<?$m=mysql_connect("localhost","××××","××××"); 
  
mysql_select_db("××××",$m); 
?> 

<?if ($fl==""$fl=1
$hf_fl=$fl
$q="select * from yxforum where id=".$fl
$mr=mysql_query($q,$m); 
$ra=mysql_fetch_row($mr); 
?> 
<p align=center><b><?print($ra[2]);?></b><br> 
<?if ($fl!=1) { 
?> 
<small><?printf("(<a href=mailto:%s>%s</a>) ",$ra[7],$ra[6]);?> 
</small></p> 
<?$alltt=$ra[2]; 
   
$lastid=$ra[4];  
   print(
"<center><table width=90% border=1><tr><td bgcolor=#dddddd class=unnamed1>".$ra[3]."</tr></table></center>"); 
   print(
"<br><small>跟随主题:</small>"); 
   }  
   
$q="select * from yxforum where fl=".$fl." order by dt desc"
  if (
$p==""$p=0
  
$mr=mysql_query($q,$m); 
  
$f=mysql_num_fields($mr); 
  
$ra=mysql_fetch_row($mr); 
$i=0$p1=$p*15/*跳过指定的页数对应的行*/ 
while ($i<$p1)  
    {
$i++; 
     
$ra=mysql_fetch_row($mr); 
     if (! 
$ra) break;} 
  
   
?> 
<center> 
  <table border=0 width=732 class="unnamed1"> 
    <tr align="center" valign="top" bgcolor="#FFFFCC">  
      <td width="186" >最新回应时间 
      <td width="88">发表人 
      <td width="414">主题 
      <td width="44">回应数 
     </tr> 
<? 
  $x
[0]="ffffcc";$x[1]="DEEFFF";$i=1
  while  (
$ra)  /*显示目前的主题*/ 
    
{$ys_c=$i%2
     print(
"<tr height=12 bgcolor=#".$x[$ys_c]."><td  align=center>".$ra[1]); 
     print(
"<td align=center><a href=mailto:".$ra[7].">".$ra[6]."</a>"); 
     print(
"<td>"); 
     
printf("<a href=index.php?fl=%s>%s</a>",$ra[0],$ra[2]); 
     print(
"<td align=center>".$ra[8]); 
     print(
"</tr>"); 
     
$ra=mysql_fetch_row($mr); 
     
$i++;  
     if (
$i>15) break;    
  }  

?> 
</table></center> 
<form action=index.php method=get name=F0 onsubmit="document.F0.p.value--;return true;"> 
<span class=unnamed1> 
<? 
$alllines
=mysql_affected_rows($m); 
$pages=$alllines/15
if (
$pages-intval($pages)!=0$pages=intval($pages)+1
    else 
$pages=intval($pages); 
print(
"共".$pages."页 第".($p+1)."页 "); 

if (
$p>0) {printf("<a href=index.php?fl=%s>首页</a> ",$hf_fl); 
           
printf("<a href=index.php?fl=%s&p=%d>上一页</a> ",$hf_fl,$p-1);} 
if (
$ra)  {printf("<a href=index.php?fl=%s&p=%d>下一页</a> ",$hf_fl,$p+1); 
           
printf("<a href=index.php?fl=%s&p=%d>末页</a> ",$hf_fl,$pages-1);} 
?>指定第<input type=text size=2 name=p>页 
</span> 
<span class=unnamed1> 
<?if ($hf_fl!=1)  {printf("<br><a href=index.php?fl=%s>上一级</a> ",$lastid); 
                  print(
"<a href=index.php>最高级</a><br>");} 
?> 
</form><center> 
<table width=80% bgcolor=#eeeeff><tr><td class=unnamed1> 
<?print(($fl==1)?"加新贴:":"回应:");?> 
<form action="addnew.php" method=post name="F1"> 
姓名:  
    <input type="text" name="nm" size="15"> 
    <br> 
    Email:  
    <input type="text" name="em" size="45"> 
    <br> 
    标题(必填): 
    <input type="text" name="tt" size="45" <?if ($fl!=1) print("value=回复:".$alltt);?> > 
    <input type=hidden name="fl" value="<?print($hf_fl);?>"> 
    <input type=hidden name="p" value="<?print($p);?>"> 
     <br> 
    正文(必填): <br> 
                  
   <textarea name="zw" cols="50" rows="10"></textarea> 
    <input type="submit" name="Submit" value="提 交"> 
</form> 
</tr></table></center> 
<hr> 
<center>自用论坛程序0.25版 设计工具:PHP+MYSQL<br> 
<a href=mailto:[email protected]>古钺青剑</a> 制作<br><a href=http://www.fhlfox.dhs.org>逍遥飞狐多媒体作坊</a> 2000 </center> 
</span> 
</body> 
</html> 



addnew.php: 

<?$m=mysql_connect("localhost","×××","×××××"); 
  
mysql_select_db("×××××",$m); 
  
$zw=ereg_replace("<","&lt;",$zw); 
   
$zw=ereg_replace(">","&gt;",$zw); 
$zw=ereg_replace("n","<br>",$zw); 
   
$zw=ereg_replace(" "," ",$zw); 
   
$tt=ereg_replace("<","&lt;",$tt); 
   
$tt=ereg_replace(">","&gt;",$tt); 
     if (
$nm==""$nm="无名宝"
  if (
$em=="") {$nm.="<-- 是一只没有MAIL的菜鸟";$em="No";} 
  
$err=strlen($tt)*strlen($zw); 
  if (
$err==0)  
     
$msg="<font color=red>不要偷懒嘛!把表格填完再提交不迟。</font>"
  else {
$q="insert into yxforum (dt,tp,ct,fl,ip,un,em,num) values" 
         
."(now(),"".$tt."","".$zw."",".$fl.","".$REMOTE_ADDR."","".$nm."","".$em."",0)"
        
mysql_query($q,$m); 
         
        
$q="select num,fl from yxforum where id=".$fl
        
$fl_a=$fl
        do { 
$mr=mysql_query($q,$m); 
             
$ra=mysql_fetch_row($mr); 
             
$num=$ra[0]+1
             
$q="update yxforum set dt=now(),num=".$num." where id=".$fl
             
$fl=$ra[1]; 
             
mysql_query($q,$m); 
             
$q="select num,fl from yxforum where id=".$fl
            } while (
$fl>0);   
     
       
   
$msg="<font color=green>你的意见已经成功提交!</font>"
        } 
?> 
<html> 
<head> 
<script language="Javascript"> 
function go() 
{document.location="index.php?fl=<?print($fl_a);?>&p=<?print($p)?>"; 
  } 
</script> 
<body onload="setTimeout('go()',3000);"> 
<?print($msg);?><br> 
系统将在3秒钟以后自动返回。如果不能返回或者你着急,请按<a href=index.php?fl=<?print($fl_a);?>&p=<?print($p)?>>这里</a> 
</body>