一个简洁的多级别论坛


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 相关文章推荐
php中对xml读取的相关函数的介绍一
Jun 05 PHP
sourcesafe管理phpproj文件的补充说明(downmoon)
Apr 11 PHP
PHP下操作Linux消息队列完成进程间通信的方法
Jul 24 PHP
php算开始时间到过期时间的相隔的天数
Jan 12 PHP
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
Aug 22 PHP
PHP函数学习之PHP函数点评
Jul 05 PHP
php设计模式之命令模式的应用详解
May 21 PHP
php发送post请求的三种方法
Feb 11 PHP
thinkphp3.2实现上传图片的控制器方法
Apr 28 PHP
PHP 文件锁与进程锁的使用示例
Aug 07 PHP
Laravel 集成微信用户登录和绑定的实现
Dec 27 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
May 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
星际争霸兵种名称对照表
2020/03/04 星际争霸
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
2016/09/11 PHP
PHP实现腾讯与百度坐标转换
2017/08/05 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
2018/03/30 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
使用PHP反射机制来构造&quot;CREATE TABLE&quot;的sql语句
2019/03/21 PHP
简单的js分页脚本
2009/05/21 Javascript
奉献给JavaScript初学者的编写开发的七个细节
2011/01/11 Javascript
Angularjs 滚动加载更多数据
2016/03/17 Javascript
深入理解jquery中的事件与动画
2016/05/24 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
Bootstrap面板学习使用
2017/02/09 Javascript
node中使用es5/6以及支持性与性能对比
2017/08/11 Javascript
vue升级之路之vue-router的使用教程
2018/08/14 Javascript
Vue引用Swiper4插件无法重写分页器样式的解决方法
2018/09/27 Javascript
Vue路由前后端设计总结
2019/08/06 Javascript
javascript实现多边形碰撞检测
2020/10/24 Javascript
[00:20]TI9观赛名额抽取Ⅱ
2019/07/24 DOTA
用python实现的线程池实例代码
2018/01/06 Python
Django框架多表查询实例分析
2018/07/04 Python
对Python中的条件判断、循环以及循环的终止方法详解
2019/02/08 Python
简单了解Django ContentType内置组件
2019/07/23 Python
python 并发下载器实现方法示例
2019/11/22 Python
pytorch中的inference使用实例
2020/02/20 Python
4行Python代码生成图像验证码(2种)
2020/04/07 Python
Gap加拿大官网:Gap Canada
2017/08/24 全球购物
维多利亚的秘密官方旗舰店:VICTORIA’S SECRET
2018/04/02 全球购物
英国电气世界:Electrical World
2019/09/08 全球购物
如何提高JDBC的性能
2013/04/30 面试题
竞选班干部的演讲稿
2014/04/24 职场文书
冬季安全检查方案
2014/05/23 职场文书
学校火灾防控方案
2014/06/09 职场文书
2014最新自愿离婚协议书范本
2014/11/19 职场文书
打架检讨书
2015/01/27 职场文书
初中数学课堂教学反思
2016/02/17 职场文书