仓酷云
标题:
PHP教程之非递归法完成服装论坛树型布局及分页
[打印本页]
作者:
简单生活
时间:
2015-2-4 00:09
标题:
PHP教程之非递归法完成服装论坛树型布局及分页
参加PHP开发学习,或许只是一次偶然的想法吧!只是想在走向社会之前体验、学习在一个公司或者说是项目团队之中如何去更有效的沟通、交流、共同合作,还有就是为毕业实习找工作增加伐码。递归|分页|树型布局
现将自己的理论了局show给人人,缺乏的地方就是分页的办法不太好,不克不及显示详细的页数,可其实又没有其它更好的处理举措,只好先如斯了,假如哪位有相似本服装论坛的分页办法,表赐教一二,二泉不堪感谢!详细可会见我的团体小网站:http://web.nyist.net/~wbgwrq,不空话了,入手下手吧......
//表的布局以下:
//creat.sql
//复杂申明:rootid 论题序数;layer:帖子条理,缩进的根据;orders:帖子的按次
create table over_post (
id int(11) not null auto_increment,
title varchar(80) not null default '',
content text,
postat datetime not null default '0000-00-00 00:00:00',
readed int(11) not null default '0',
size int(11) not null default '0',
rootid int(11) not null default '0',
orders int(4) not null default '0',
layer int(4) not null default '0',
primary key (id)
) type=myisam;
//creat.sql end
//宣布根帖,即rootid,layer,orders为0的帖子
//said.php
//begin
<form method="post" action="post.php">
<table width="81%" border="0" cellspacing="1" cellpadding="0" align="center">
<tr bgcolor="#66cccc">
<td height="35" width="23%">
<div align="right">你的设法:
</div>
</td>
<td height="35" width="77%">
<input type="text" name="title" size="50" class="eq">
</td>
</tr>
<tr bgcolor="#66cccc">
<td height="39" width="23%">
<div align="right">你的内容:
</div>
</td>
<td height="39" width="77%">
<textarea name="content" cols="50" rows="10" class="eq"></textarea>
</td>
</tr>
<tr bgcolor="#66cccc">
<td colspan="2" height="24">
</td>
</tr>
<tr bgcolor="#66cccc">
<td colspan="2" height="28">
<div align="center">
<input type="submit" name="said" value="先说这些">
<input type="reset" name="submit2" value="从头再来">
</div>
</td>
</tr>
</table>
</form>
//said.php end
//帖子内容,且在本页停止跟帖
//content.php
//begin
<?php
$result=mysql_query("select
over_post.title,over_post.content,over_post.postat,over_post.readed,over_post.rootid,over_post.la
yer,over_post.orders from over_post where over_post.id=$id");
$readed=mysql_result($result,0,"readed");
$title=mysql_result($result,0,"title");
$content=mysql_result($result,0,"content");
$date=mysql_result($result,0,"postat");
$rootid=mysql_result($result,0,"rootid");
$orders=mysql_result($result,0,"orders");
$layer=mysql_result($result,0,"layer");
?>
<table width="90%" cellspacing="1" bgcolor="red" align="center">
<tr bgcolor="#ffffff">
<td width="12%">宣布人:</td>
</tr>
<tr bgcolor="#ffffff">
<td width="12%">主 题:</td>
<td colspan="5">《<?php echo $title; ?>》 <font color="666666"><i>【
readed:<?echo"$readed";?>】 <?echo"$date";?></i></font></td>
</tr>
<tr bgcolor="#ffffff">
<td width="12%">内 容:</td>
<td colspan="5"><?php echo $content; ?></td>
</tr>
</table>
<br>
<center>
服装论坛宣布跟帖
<form method="post" action="post.php">
<table width="78%" cellspacing="0" align="center" cellpadding="0" border="0">
<tr bgcolor="#ffffff">
<td height="24" width="12%">
<div align="right">标题:</div>
</td>
<td height="24" width="88%">
<input type="text" name="title" class="eq" size="50">
</td>
</tr>
<tr bgcolor="#ffffff">
<td height="63" width="12%">
<div align="right">内容:</div>
</td>
<td height="63" width="88%">
<textarea name="content" class="eq" cols="50" rows="10"></textarea>
</td>
</tr>
<tr bgcolor="#ffffff">
<td height="57" colspan="2">
</td>
</tr>
<tr bgcolor="#ffffff">
<td height="20" colspan="2">
<div align="center">
<input type="submit" name="reply" value="跟帖" class=in>
<input type="reset" value="重写" class=in name="reset">
<input type="hidden" name="rootid" value="<?echo $rootid;?>">
<input type="hidden" name="orders" value="<?echo$orders;?>">
<input type="hidden" name="layer" value="<?echo$layer;?>">
</div>
</td>
</tr>
</table>
//content.php end
//更新数据库
//post.php
//begin
<?
$content=nl2br(htmlspecialchars($content));
$title=htmlspecialchars($title); //决不答应在题目上利用html
$date=date("y-m-d h:i:s");
$length=strlen($content);
if(isset($said)) //宣布新帖子
{
$query="insert into over_post
values(null,'$title','$content',$user_id,'$date',0,$length,$img,'','','')";
$result=mysql_query($query) or die(mysql_error());
$r=mysql_query("select max(id) from over_post");
$rootid = mysql_result($r,0)+0;
mysql_query("update over_post set rootid=$rootid where id=$rootid")or die(mysql_error());
}
if(isset($reply)): //宣布跟帖
mysql_query("update over_post set orders=orders+1 where rootid=$rootid and orders>$orders")or
die(mysql_error());
$layer=$layer+1;
$orders=$orders+1;
$query="insert into over_post
values(null,'$title','$content',$user_id,'$date',0,$length,$img,$rootid,$orders,$layer)";
$result=mysql_query($query) or die(mysql_error());
endif;
if($result) {
include"list.php";
}
?>
//post.php end
//重头戏,显示一切帖子,并完成分页
//list.php
//begin
<?php
//找到最新论题的rootid
$query = "select max(rootid) as maxid1, min(rootid) as minid1 from over_post";
$result = mysql_query($query);
$maxid1 = mysql_result($result, 0, "maxid1");
$startid1 = mysql_result($result, 0, "minid1");
if(!($maxid1>0)) $maxid1=0;
if(!($startid1>0)) $startid1=0;
$totalid1 = $maxid1; //这是真实的最大的rootid值, $maxid1要依据$nextmaxid1变的
if($nextmaxid1>0) $maxid1=$nextmaxid1; //翻页
//盘算最小rootid:注重上面的desc,与limit联合,包管拔取纪录的局限.
//假如利用asc, 在mysql_result中检索第0个,将大大毛病!
$itemsperpage=30;
$query="select distinct rootid from over_post where rootid<=$maxid1 order by rootid desc limit
$itemsperpage";
$r=mysql_query($query);
$n=mysql_num_rows($r);
if($n>0) {
$minid1=mysql_result($r,$n-1);
$query="select * from over_post where rootid<=$maxid1 and rootid>=$minid1 order by rootid
desc,orders";
$result=mysql_query($query);
$num=mysql_num_rows($result);
}
else {
$minid1=0;
$maxid1=0;
echo "<p><center><font color='#ff0000'>没有更多的讲话内容</font></center>";
}
$query="select distinct rootid from over_post where rootid>$maxid1 order by rootid limit
$itemsperpage";
$r=mysql_query($query);
$n=mysql_num_rows($r);
if($n>0) $up=mysql_result($r,$n-1);
else $up=$totalid1;
$query="select distinct rootid from over_post where rootid<$minid1 order by rootid desc limit
$itemsperpage";
$r=mysql_query($query);
$n=mysql_num_rows($r);
if($n>0) $down=mysql_result($r,0);
else $down=$maxid1;
?>
<div align=center>
<br>
<table width="90%" border="0" cellspacing="1" cellpadding="0" align="center">
<tr bgcolor="2880ac">
<td height="20" align="center"><font color="#ffffff"><a
href="javascript:window.location.reload()" class=a1>刷新</a>
<a href="list.php" class=a1>首页</a> <a href="list.php?nextmaxid1=<?echo$up;?>" class=a1>
上页</a>
<a href="list.php?nextmaxid1=<?echo$down;?>" class=a1>下页</a> <?echo" 现存论题
:$startid1-$totalid1 ";?>
</font></td>
</tr>
<tr>
<td height="40" bgcolor="#e0f0f8" cellspacing="1">
<?php
echo"<ul>";
while ($array=mysql_fetch_array($result)){
$id=$array["id"];
$title=$array["title"];
$content=$array["content"];
$postat=$array["postat"];
$readed=$array["readed"];
$size=$array["size"];
if($size==0) $size="无内容";
else $size.=" bytes";
$rootid=$array["rootid"];
$orders=$array["orders"];
$layer=$array["layer"];
$ul=""; //入手下手树型布局
$_ul="";
for($j=0;$j<$layer;$j++){
$ul=$ul."<ul>";
$_ul=$_ul."</ul>";
}
echo $ul."<li>"."<a href=\"content.php?id=$id\" class=big>$title</a><font color=006699>($size) 【
".作者."】 $postat <被读:$readed> </font><br>".$_ul;
flush();
//树型布局停止
}
?><br></td>
</tr>
<tr bgcolor="2880ac">
<td height="20" align="center"><font color="#ffffff"><a
href="javascript:window.location.reload()" class=a1>刷新</a>
<a href="list.php" class=a1>首页</a> <a href="list.php?nextmaxid1=<?echo$up;?>" class=a1>
上页</a>
<a href="list.php?nextmaxid1=<?echo$down;?>" class=a1>下页</a> <?echo" 现存论题
:$startid1-$totalid1 ";?>
</font></td>
</tr>
</table>
</div>
//list.php end
学习数据库了,MYSQL可算是PHP的黄金搭档了,不过,虽然话是这么说,你也可能恨不得把MYSQL给生吞活剥了,因为这一行一列的东东简直让自己头晕目眩。
作者:
精灵巫婆
时间:
2015-2-4 09:36
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
作者:
爱飞
时间:
2015-2-9 21:35
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
作者:
透明
时间:
2015-2-20 10:50
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
作者:
飘飘悠悠
时间:
2015-3-6 16:52
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
作者:
小妖女
时间:
2015-3-10 15:05
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
作者:
再见西城
时间:
2015-3-11 04:57
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
作者:
小女巫
时间:
2015-3-17 20:54
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
作者:
谁可相欹
时间:
2015-3-17 20:58
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
作者:
冷月葬花魂
时间:
2015-3-24 21:52
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
作者:
海妖
时间:
2015-4-4 17:48
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
作者:
第二个灵魂
时间:
2015-4-6 23:08
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
作者:
简单生活
时间:
2015-4-16 07:11
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
作者:
柔情似水
时间:
2015-4-17 22:46
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
作者:
山那边是海
时间:
2015-4-25 02:46
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
作者:
变相怪杰
时间:
2015-5-4 08:05
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
作者:
愤怒的大鸟
时间:
2015-5-4 13:36
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
作者:
老尸
时间:
2015-6-10 10:52
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
作者:
兰色精灵
时间:
2015-6-13 20:41
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
作者:
若相依
时间:
2015-7-3 01:29
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2