仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2249|回复: 20
打印 上一主题 下一主题

[学习教程] PHP网站制作之非递归法完成服装论坛树型布局及分页!!(...

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:23:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
终于学会把表单的数据插入数据库,然后显示出来了,应该说一个程序的雏形已经诞生了。递归|分页|树型布局   现将自己的理论了局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  你的确对PHP有兴趣,那么选择教材也是很重要的。
金色的骷髅 该用户已被删除
沙发
发表于 2015-2-4 12:55:41 | 只看该作者
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
小魔女 该用户已被删除
板凳
发表于 2015-2-9 20:25:53 | 只看该作者
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
兰色精灵 该用户已被删除
地板
发表于 2015-2-27 21:01:17 | 只看该作者
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
飘飘悠悠 该用户已被删除
5#
发表于 2015-3-7 03:49:05 | 只看该作者
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
变相怪杰 该用户已被删除
6#
发表于 2015-3-13 07:07:15 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
谁可相欹 该用户已被删除
7#
发表于 2015-3-16 12:59:15 | 只看该作者
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
爱飞 该用户已被删除
8#
发表于 2015-3-20 12:30:45 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
admin 该用户已被删除
9#
发表于 2015-4-10 14:52:16 | 只看该作者
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
小女巫 该用户已被删除
10#
发表于 2015-4-10 17:15:28 | 只看该作者
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
再现理想 该用户已被删除
11#
发表于 2015-4-12 09:08:52 | 只看该作者
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
12#
发表于 2015-5-4 21:06:33 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
海妖 该用户已被删除
13#
发表于 2015-5-5 21:08:17 | 只看该作者
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
小妖女 该用户已被删除
14#
发表于 2015-6-6 07:09:39 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
活着的死人 该用户已被删除
15#
发表于 2015-6-20 12:27:24 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
因胸联盟 该用户已被删除
16#
发表于 2015-6-23 04:14:54 | 只看该作者
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
灵魂腐蚀 该用户已被删除
17#
发表于 2015-6-28 19:04:05 | 只看该作者
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
乐观 该用户已被删除
18#
发表于 2015-7-1 13:44:06 | 只看该作者
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
蒙在股里 该用户已被删除
19#
 楼主| 发表于 2015-7-15 09:30:48 | 只看该作者
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
只想知道 该用户已被删除
20#
发表于 2015-7-19 06:39:10 | 只看该作者
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-4-28 20:38

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表