一个简洁的多级别论坛


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下常用正则表达式整理
Oct 26 PHP
PHP中删除变量时unset()和null的区别分析
Jan 27 PHP
探讨file_get_contents与curl效率及稳定性的分析
Jun 06 PHP
简单实用的网站PHP缓存类实例
Jul 18 PHP
Yii实现多数据库主从读写分离的方法
Dec 29 PHP
discuz图片顺序混乱解决方案
Jul 29 PHP
Symfony2实现在controller中获取url的方法
Mar 18 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
Sep 09 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
Aug 28 PHP
PHPTree――php快速生成无限级分类
Mar 30 PHP
php5对象复制、clone、浅复制与深复制实例详解
Aug 14 PHP
阿里云服务器搭建Php+Apache运行环境的详细过程
May 15 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
让你的网站首页自动选择语言转跳
2006/12/06 PHP
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
php 静态变量与自定义常量的使用方法
2010/01/26 PHP
php empty,isset,is_null判断比较(差异与异同)
2010/10/19 PHP
PHP中的session永不过期的解决思路及实现方法分享
2011/04/20 PHP
判断Keep-Alive模式的HTTP请求的结束的实现代码
2011/08/06 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
2014/07/08 PHP
PHP循环遍历数组的3种方法list()、each()和while总结
2014/11/19 PHP
select 控制网页内容隐藏于显示的实现代码
2010/05/25 Javascript
jquery 操作DOM的基本用法分享
2012/04/05 Javascript
页面使用密码保护代码
2013/04/10 Javascript
理解javascript中的严格模式
2016/02/01 Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
2020/04/16 Javascript
jQuery实现一个简单的轮播图
2017/02/19 Javascript
JS中实现函数return多个返回值的实例
2017/02/21 Javascript
浅谈node.js 命令行工具(cli)
2018/05/10 Javascript
解析原来浏览器原生支持JS Base64编码解码
2019/08/12 Javascript
Vue实现页面添加水印功能
2019/11/09 Javascript
基于javascript的无缝滚动动画1
2020/08/07 Javascript
在Python中使用swapCase()方法转换大小写的教程
2015/05/20 Python
PyQt4编程之让状态栏显示信息的方法
2019/06/18 Python
如何通过Python实现标签云算法
2019/07/02 Python
Pandas实现dataframe和np.array的相互转换
2019/11/30 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
python+opencv边缘提取与各函数参数解析
2020/03/09 Python
Java多线程实现四种方式原理详解
2020/06/02 Python
css3实现超炫风车特效
2014/11/12 HTML / CSS
客服端调用EJB对象的几个基本步骤
2012/01/15 面试题
小学生防溺水广播稿
2014/01/12 职场文书
《满井游记》教学反思
2014/02/26 职场文书
三分钟演讲稿事例
2014/03/03 职场文书
2014法制宣传日活动总结
2014/07/09 职场文书
关于群众路线的心得体会
2014/11/05 职场文书
2015年体育教学工作总结
2015/05/20 职场文书
写作技巧:如何撰写商业计划书
2019/08/08 职场文书
nginx配置文件使用环境变量的操作方法
2021/06/02 Servers