您的位置:首页技术文章

一个简洁的多级别论坛

【字号: 日期:2023-08-29 19:04:39浏览:11作者:馨心
本论坛总共用了不到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("<","&lt;",$zw);;;;;;$zw=ereg_replace(">","&gt;",$zw);;;$zw=ereg_replace("n","<br>",$zw);;;;;;$zw=ereg_replace(" "," ",$zw);;;;;;$tt=ereg_replace("<","&lt;",$tt);;;;;;$tt=ereg_replace(">","&gt;",$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