一个简洁的多级别论坛


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+dbfile开发小型留言本
Oct 09 PHP
PHP学习笔记 用户注册模块用户类以及验证码类
Sep 20 PHP
解析PHP汉字转换拼音的类
Jun 18 PHP
使用PHP接收POST数据,解析json数据
Jun 28 PHP
phpmyadmin config.inc.php配置示例
Aug 27 PHP
CI框架Session.php源码分析
Nov 03 PHP
详解PHP数据压缩、加解密(pack, unpack)
Dec 17 PHP
详解PHP中的序列化、反序列化操作
Mar 21 PHP
PHP简单实现模拟登陆功能示例
Sep 15 PHP
PHP封装的XML简单操作类完整实例
Nov 13 PHP
针对PHP开发安全问题的相关总结
Mar 22 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
Sep 18 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
实现 win2003 下 mysql 数据库每天自动备份
2006/12/06 PHP
codeigniter集成ucenter1.6双向通信的解决办法
2014/06/12 PHP
PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
2014/07/11 PHP
摘自织梦CMS中的图片处理类
2015/08/08 PHP
PHP设置头信息及取得返回头信息的方法
2016/01/25 PHP
php实现的中文分词类完整实例
2017/02/06 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
js有序数组的连接问题
2013/10/01 Javascript
WEB前端设计师常用工具集锦
2014/12/09 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
2017/02/08 Javascript
实例详解ztree在vue项目中使用并且带有搜索功能
2018/08/24 Javascript
详解Vue项目部署遇到的问题及解决方案
2019/01/11 Javascript
JS window对象简单操作完整示例
2020/01/14 Javascript
[44:15]国士无双DOTA2 6.82版本详解(上)
2014/09/28 DOTA
[01:35]2018年度CS GO最佳战队-完美盛典
2018/12/17 DOTA
Python基于select实现的socket服务器
2016/04/13 Python
tensorflow实现softma识别MNIST
2018/03/12 Python
python自动发送邮件脚本
2018/06/20 Python
Python numpy.array()生成相同元素数组的示例
2018/11/12 Python
Python3实现从排序数组中删除重复项算法分析
2019/04/03 Python
使用TensorFlow搭建一个全连接神经网络教程
2020/02/06 Python
Python urllib2运行过程原理解析
2020/06/04 Python
一款纯css3制作的2015年元旦雪人动画特效教程
2014/12/29 HTML / CSS
CSS3贝塞尔曲线示例:创建链接悬停动画效果
2020/11/19 HTML / CSS
西班牙香水和化妆品购物网站:Arenal Perfumerías
2019/03/01 全球购物
英国的领先快速时尚零售商:In The Style
2019/03/25 全球购物
关于是否需要写商业计划书
2014/02/07 职场文书
创建青年文明号材料
2014/05/09 职场文书
单位委托书
2014/10/15 职场文书
2014年林业工作总结
2014/12/05 职场文书
2015年重阳节慰问信
2015/03/23 职场文书
2016年公司中秋节致辞
2015/11/26 职场文书
唱歌比赛拉拉队口号
2015/12/25 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书
pytorch 如何使用float64训练
2021/05/24 Python
win10识别不了U盘怎么办 win10系统读取U盘失败的解决办法
2022/08/05 数码科技