当前位置: 首页 > 图文教程 > 网络编程 > PHP > 一个简洁的多级别论坛

PHP
php面向对象全攻略 (十五) 多态的应用
php面向对象全攻略 (十六) 对象的串行化
php面向对象全攻略 (十七) 自动加载类
PHP parse_url 一个好用的函数
PHP 字符串分割和比较
全世界最小的php网页木马一枚 附PHP木马的防范方法
PHP 日期加减的类,很不错
PHP 日期时间函数的高级应用技巧
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
Ha0k 0.3 PHP 网页木马修改版
PHP iconv 函数转gb2312的bug解决方法
关于页面优化和伪静态
使用zend studio for eclipse不能激活代码提示功能的解决办法
PHP 身份验证方面的函数
基于OpenCV的PHP图像人脸识别技术
用mysql触发器自动更新memcache的实现代码
php 数学运算验证码实现代码
PHP网站开发方案实例
PHP教程:挖掘细节提升网站性能
搜索引擎技术核心揭密(PHP)

PHP 中的 一个简洁的多级别论坛


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 159 ::
收藏到网摘: n/a

本论坛总共用了不到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("<","<",$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>