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

PHP
linux php mysql数据库备份实现代码
php mssql 日期出现中文字符的解决方法
PHP中查询SQL Server或Sybase时TEXT字段被截断的解决方法
php 动态添加记录
php 结果集的分页实现代码
php执行sql语句的写法
php连接mysql数据库代码
php 表单验证实现代码
php URL编码解码函数代码
php 表单数据的获取代码
php 异常处理实现代码
php 删除记录实现代码
php 获取mysql数据库信息代码
PHP 文件类型判断代码
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
php session 预定义数组
php session 检测和注销
php session处理的定制
php session应用实例 登录验证
php cookis创建实现代码

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 264 ::
收藏到网摘: 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>