一个简洁的多级别论坛


Posted in PHP onOctober 09, 2006

本论坛总共用了不到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:fhl@cgi.hnpts.ha.cn>古钺青剑</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("<","<",$zw);  
   $zw=ereg_replace(">",">",$zw);  
$zw=ereg_replace("n","<br>",$zw);  
   $zw=ereg_replace(" "," ",$zw);  
   $tt=ereg_replace("<","<",$tt);  
   $tt=ereg_replace(">",">",$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> 

PHP 相关文章推荐
phpfans留言版用到的数据操作类和分页类
Jan 04 PHP
一个很不错的PHP翻页类
Jun 01 PHP
PHP var_dump遍历对象属性的函数与应用代码
Jun 04 PHP
TMDPHP 模板引擎使用教程
Mar 13 PHP
使用PHP获取当前url路径的函数以及服务器变量
Jun 29 PHP
PHP取二进制文件头快速判断文件类型的实现代码
Aug 05 PHP
php数组编码转换示例详解
Mar 11 PHP
PHP采集类snoopy详细介绍(snoopy使用教程)
Jun 19 PHP
PHP中使用php://input处理相同name值的表单数据
Feb 03 PHP
Thinkphp开发--集成极光推送
Sep 15 PHP
PHP错误提示It is not safe to rely on the system……的解决方法
Mar 25 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 PHP
用ODBC的分页显示
Oct 09 #PHP
为查询结果建立向后/向前按钮
Oct 09 #PHP
投票管理程序
Oct 09 #PHP
用PHP和ACCESS写聊天室(九)
Oct 09 #PHP
用PHP和ACCESS写聊天室(八)
Oct 09 #PHP
用PHP和ACCESS写聊天室(七)
Oct 09 #PHP
一个简单实现多条件查询的例子
Oct 09 #PHP
You might like
无数据库的详细域名查询程序PHP版(2)
2006/10/09 PHP
PHP语言中global和$GLOBALS[]的分析 之二
2012/02/02 PHP
PHP用FTP类上传文件视频等的简单实现方法
2016/09/23 PHP
Thinkphp5+uploadify实现的文件上传功能示例
2018/05/26 PHP
javascript中最常用的继承模式 组合继承
2010/08/12 Javascript
运用jQuery定时器的原理实现banner图片切换
2014/10/22 Javascript
JS清除选择内容的方法
2015/01/29 Javascript
javascript内置对象操作详解
2015/02/04 Javascript
JavaScript数据类型之基本类型和引用类型的值
2015/04/01 Javascript
jQuery+json实现的简易Ajax调用实例
2015/12/14 Javascript
jquery实现简单的全选和反选功能
2016/01/02 Javascript
基于Vue实现微信小程序的图文编辑器
2018/07/25 Javascript
详解VUE单页应用骨架屏方案
2019/01/17 Javascript
JavaScript常用工具方法封装
2019/02/12 Javascript
Python实现的简单算术游戏实例
2015/05/26 Python
通过Python爬虫代理IP快速增加博客阅读量
2016/12/14 Python
ubuntu系统下 python链接mysql数据库的方法
2017/01/09 Python
python九九乘法表的实例
2017/09/26 Python
python实现词法分析器
2019/01/31 Python
Python 获取numpy.array索引值的实例
2019/12/06 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
2020/08/22 Python
将不规则的Python多维数组拉平到一维的方法实现
2021/01/11 Python
几个解决兼容IE6\7\8不支持html5标签的几个方法
2013/01/07 HTML / CSS
html5使用canvas压缩图片的示例代码
2018/09/11 HTML / CSS
毕业生就业自荐书
2013/12/15 职场文书
初中音乐教学反思
2014/01/12 职场文书
品质管理部岗位职责范文
2014/03/01 职场文书
银行转正自我鉴定
2014/09/29 职场文书
妈妈再爱我一次观后感
2015/06/08 职场文书
有关骆驼祥子的读书笔记
2015/06/26 职场文书
2015年城乡环境综合治理工作总结
2015/07/24 职场文书
mysql数据库入门第一步之创建表
2021/05/14 MySQL
pandas中DataFrame数据合并连接(merge、join、concat)
2021/05/30 Python
Python 实现Mac 屏幕截图详解
2021/10/05 Python
Nginx设置HTTPS的方法步骤 443证书配置方法
2022/03/21 Servers
Python中的socket网络模块介绍
2022/07/23 Python