域名|空间 淘宝 拍拍网店传奇世界私服 林海科技频道 欢迎加盟1G双线赠数据库八折广告位56296827
返回列表 回复 发帖

无限分类&树型论坛的实现方法[整理后]

  无限分类&树型论坛的实现方法[整理后]


分类表数据表参考:

CODE:
[url=###][Copy to clipboard][/url]
CREATE TABLE `mf_sort` (
  `sortid` smallint(3) unsigned NOT NULL auto_increment,
  `main` tinyint(2) unsigned NOT NULL default '0',
  `parentid` smallint(3) unsigned NOT NULL default '0',
  `layer` smallint(3) unsigned NOT NULL default '0',
  `orders` tinyint(2) unsigned NOT NULL default '0',
  `sort` varchar(100) NOT NULL default '',
  PRIMARY KEY  (`sortid`),
  KEY `main` (`main`,`parentid`,`layer`,`orders`)
) ;
#sortid 类别编号
#main 根分类
#parentid 父ID
#layer 分类等级
#orders 排列顺序
#输出的时候 order by `main` asc, `orders` asc两个主要的函数

CODE:
[url=###][Copy to clipboard][/url]
function get_main_layer_orders($parentid)
{
   global $x_db;
   $sql  = "select `main`, `layer`, `orders` ";
   $sql .= "from `mf_sort` ";
   $sql .= "where `sortid`='$parentid'";
   $x_db->exec($sql);
   $data  = $x_db->get_data();
   $layer  = $data[0]['layer'] 1;
   $main  = $data[0]['main'];
   $orders = $data[0]['orders'];

   $sql  = "select `sortid` from `mf_sort` ";
   $sql .= "where `parentid`='$parentid'";
   $x_db->exec($sql);
   $n = $x_db->n;
   if ($n>0)
   {
      $lastid = $parentid;
      get_lastid($lastid);
      $sql   = "select `orders` from `mf_sort` ";
      $sql  .= "where `sortid`='$lastid'";
      $x_db->exec($sql);
      $data  = $x_db->get_data();
      $orders = $data[0][0];
      $sql   = "update `mf_sort` ";
      $sql  .= "set `orders`=`orders` 1 ";
      $sql  .= "where `orders`>$orders and `main`='$main'";
      $x_db->exec($sql);
      $orders = $orders  1;
      return array($main, $layer, $orders);
   }
   else
   {
      $sql   = "update `mf_sort` ";
      $sql  .= "set `orders`=`orders` 1 ";
      $sql  .= "where `orders`>$orders and `main`='$main'";
      $x_db->exec($sql);
      return array($main, $layer, $orders 1);
   }
}

//取得最后一个有效sortid
function get_lastid(&$parentid)
{
   global $x_db;
   $pre  = $parentid;
   $sql  = "select max(`sortid`) as `id` ";
   $sql .= "from `mf_sort` ";
   $sql .= "where `parentid` = '$parentid'";
   $x_db->exec($sql);
   $data = $x_db->get_data();
   $id  = $data[0]['id'];
   if (empty($id))
   {
      $parentid = $pre;
   }
   else
   {
      $parentid = $id;
      get_lastid($parentid);
   }
}演示页面: http://tech.2fs.cn/mf_sort/sort.php
sort.php的代码:

CODE:
[url=###][Copy to clipboard][/url]
<?php
//
//  -------------------------------------------------
// | id: sort.php                       
//  -------------------------------------------------
// | Copyright (c) Arvan      
//  -------------------------------------------------
// | Creat Date:  2003-9-25
// | Modify Date:  2003-9-26
// | Note:
// |
// |
// |
//  --------------------------------------------------
//

include_once "global.php";

$sql = "select `sortid`, `sort`, `parentid`, `layer` from `mf_sort` order by `main` desc, `orders` asc";
$x_db->exec($sql);
$data = $x_db->get_data();
?>
<html>
<head>
<title>类别管理</title>
<meta http-equiv="Content-Type" content="text/html; charset=??????">
<link href="main.css" rel="stylesheet" type="text/css">
<script language="JavaScript">
function add_new_sort(parentsort)
{   
   if (parentsort==&#39;&#39;)
   {
      alert(&#39;请正确选择类别!&#39;);
      return false;
   }
   addarea.innerHTML = "# 为了好的显示效果,此部分省略";
}
</script>
</head>

<body bgcolor="#F2F2F2">
<p> </p>
<form name="form1" method="post" action="mf_sort_conf.php">
  添加根分类:
  <input name="newmainsort" type="text" id="newmainsort">
  <input name="action" type="hidden" value="newmainsort">
  <input type="submit" name="submit" value="确定">
</form><br><br>
<form name="form2" method="post" action="mf_sort_conf.php">
  <select name="parentsort">
   <option>分类列表</option>
   <?
   for ($i=0; $i<sizeof($data); $i  )
   {   
      $layer  = $data[$i][&#39;layer&#39;];
      $sort  = $data[$i][&#39;sort&#39;];
      $sortid = $data[$i][&#39;sortid&#39;];
      $space = &#39;&#39;;
      for($s=0; $s<$layer; $s  )
      {
        $space = $space."--";
      }
      echo "<option value=\"$sort\">$space"."$sort</option>\n";
   }
   ?>
  </select>
  <input type="button" name="action" value="编辑" disabled>
  <input type="button" name="action" value="删除" disabled>
  <input type="button" value="添加子分类" onClick="return add_new_sort(this.form.parentsort.value)">
</form>
<br><br>
<span id="addarea"></span>
</body>
</html>mf_sort_conf.php的代码:

CODE:
[url=###][Copy to clipboard][/url]
<?php
//
//  -------------------------------------------------
// | id: mf_sort_conf.php                       
//  -------------------------------------------------
// | Copyright (c) Arvan   
//  -------------------------------------------------
// | Creat Date:  2003-9-26
// | Modify Date: 2003-9-26
// | Note:
// |
// |
// |
//  --------------------------------------------------
//

include_once "global.php";

$action  =& $_POST[&#39;action&#39;];
if ($action==&#39;newmainsort&#39;) //添加根分类
{
   $newmainsort =& $_POST[&#39;newmainsort&#39;];
   $sql  = "select max(`main`) as `main` from `mf_sort`";
   $x_db->exec($sql);
   $data = $x_db->get_data();
   $main = $data[0][&#39;main&#39;] 1;
   
   $sql  = "insert into `mf_sort` ";
   $sql .= "(`sortid`, `main`, `parentid`, `layer`, `orders`, `sort`) ";
   $sql .= "values(&#39;&#39;, &#39;$main&#39;, &#39;0&#39;, &#39;0&#39;, &#39;0&#39;, &#39;$newmainsort&#39;)";
   $x_db->exec($sql);
   $n   = $x_db->n;
   if ($n>0)
   {
      Alert("添加成功!", $url=&#39;sort.php&#39;);
      exit;
   }
}

if ($action==&#39;newsort&#39;) //添加子分类
{
   $parentsort =& $_POST[&#39;parentsort&#39;]; //父类名
   $newsort   =& $_POST[&#39;newsort&#39;];   //子类名(即需要添加的分类名)

   $sql  = "select `sortid` from `mf_sort` ";
   $sql .= "where `sort`=&#39;$parentsort&#39;";
   $x_db->exec($sql);
   $data = $x_db->get_data();
   
   $parentid = $data[0][0];
   $MLO    = get_main_layer_orders($parentid);
   $main    = $MLO[0];
   $layer   = $MLO[1];
   $orders  = $MLO[2];

   $sql  = "insert into `mf_sort` ";
   $sql .= "(`sortid`, `main`, `parentid`, `layer`, `orders`, `sort`) ";
   $sql .= "values(&#39;&#39;, &#39;$main&#39;, &#39;$parentid&#39;, &#39;$layer&#39;, &#39;$orders&#39;, &#39;$newsort&#39;)";
   $x_db->exec($sql);
   $n   = $x_db->n;
   if ($n>0)
   {
      Alert("添加成功!", $url=&#39;sort.php&#39;);
      exit;
   }
}

$x_db->free(); //释放
?>分类演示:
http://tech.2fs.cn/mf_sort/sort.php


树型论坛演示:
http://forum.2fs.cn/forumdisplay.php?forumid=1&tree=1



主要的都说了......^_^

[ Last edited by Arvan on 2003-9-26 at 08:31 PM ]







不接落伍任何人商业单子

以后也不在落伍找人买东西之类的了,骗子他妈的一大堆
返回列表