首页 > 代码交流 > > 正文
进入 域名交易资讯论坛

无限分类&树型论坛的实现

作者:Arvan    来源:落伍者论坛   更新时间:09-23点击:评论:0

Arvan 发表于 2003-9-23 19:26EHU中国域名交易资讯网

无限分类&树型论坛的实现

数据表参考EHU中国域名交易资讯网
[code]EHU中国域名交易资讯网
CREATE TABLE `mf_sort` (EHU中国域名交易资讯网
`sortid` SMALLINT( 3 ) UNSIGNED NOT NULL AUTO_INCREMENT ,EHU中国域名交易资讯网
`main` TINYINT( 2 ) UNSIGNED NOT NULL ,EHU中国域名交易资讯网
`parentid` SMALLINT( 3 ) UNSIGNED NOT NULL ,EHU中国域名交易资讯网
`layer` SMALLINT( 3 ) UNSIGNED NOT NULL ,EHU中国域名交易资讯网
`orders` TINYINT( 2 ) UNSIGNED NOT NULL ,EHU中国域名交易资讯网
`sort` VARCHAR( 100 ) NOT NULL ,EHU中国域名交易资讯网
PRIMARY KEY ( `sortid` ) ,EHU中国域名交易资讯网
INDEX ( `main` , `parentid` , `layer` , `orders` ) EHU中国域名交易资讯网
);EHU中国域名交易资讯网
EHU中国域名交易资讯网
#sortid 类别编号EHU中国域名交易资讯网
#main  根分类EHU中国域名交易资讯网
#parentid 父IDEHU中国域名交易资讯网
#layer 分类等级EHU中国域名交易资讯网
#orders 排列顺序EHU中国域名交易资讯网
[/code]EHU中国域名交易资讯网
EHU中国域名交易资讯网
主要函数,用于添加分类时用,根分类除外:EHU中国域名交易资讯网
[code]EHU中国域名交易资讯网
function get_main_layer_orders($parentid)EHU中国域名交易资讯网
{EHU中国域名交易资讯网
    global $x_db;EHU中国域名交易资讯网
    $sql  = "select `main`, `layer`, `orders` ";EHU中国域名交易资讯网
    $sql .= "from `mf_sort` ";EHU中国域名交易资讯网
    $sql .= "where `postid`='$parentid'";EHU中国域名交易资讯网
    $x_db->exec($sql);EHU中国域名交易资讯网
    $data   = $x_db->get_data();EHU中国域名交易资讯网
    $layer  = $data[0]['layer']+1;EHU中国域名交易资讯网
    $main   = $data[0]['main'];EHU中国域名交易资讯网
    $orders = $data[0]['orders'];EHU中国域名交易资讯网
EHU中国域名交易资讯网
    $sql  = "select `sortid` from `mf_sort` ";EHU中国域名交易资讯网
    $sql .= "where `parentid`='$parentid'";EHU中国域名交易资讯网
    $x_db->exec($sql);EHU中国域名交易资讯网
    $n = $x_db->n;EHU中国域名交易资讯网
    if ($n>0)EHU中国域名交易资讯网
    {EHU中国域名交易资讯网
        $lastid = $parentid;EHU中国域名交易资讯网
        get_lastid($lastid);EHU中国域名交易资讯网
        $sql    = "select `orders` from `mf_sort` ";EHU中国域名交易资讯网
        $sql   .= "where `sortid`='$lastid'";EHU中国域名交易资讯网
        $x_db->exec($sql);EHU中国域名交易资讯网
        $data   = $x_db->get_data();EHU中国域名交易资讯网
        $orders = $data[0][0];EHU中国域名交易资讯网
        $sql    = "update `mf_sort` ";EHU中国域名交易资讯网
        $sql   .= "set `orders`=`orders`+1 ";EHU中国域名交易资讯网
        $sql   .= "where `orders`>$orders and `main`='$main'";EHU中国域名交易资讯网
        $x_db->exec($sql);EHU中国域名交易资讯网
        $orders = $orders + 1;EHU中国域名交易资讯网
        return array($main, $layer, $orders);EHU中国域名交易资讯网
    }EHU中国域名交易资讯网
    elseEHU中国域名交易资讯网
    {EHU中国域名交易资讯网
        $sql    = "update `mf_sort` ";EHU中国域名交易资讯网
        $sql   .= "set `orders`=`orders`+1 ";EHU中国域名交易资讯网
        $sql   .= "where `orders`>$orders and `main`='$main'";EHU中国域名交易资讯网
        $x_db->exec($sql);EHU中国域名交易资讯网
        return array($main, $layer, $orders+1);EHU中国域名交易资讯网
    }EHU中国域名交易资讯网
}EHU中国域名交易资讯网
EHU中国域名交易资讯网
//取得最后一个有效sortidEHU中国域名交易资讯网
function get_lastid(&$parentid)EHU中国域名交易资讯网
{EHU中国域名交易资讯网
    global $x_db;EHU中国域名交易资讯网
    $pre  = $parentid;EHU中国域名交易资讯网
    $sql  = "select max(`sortid`) as `id` ";EHU中国域名交易资讯网
    $sql .= "from `mf_sort` ";EHU中国域名交易资讯网
    $sql .= "where `parentid` = '$parentid'";EHU中国域名交易资讯网
    $x_db->exec($sql);EHU中国域名交易资讯网
    $data = $x_db->get_data();EHU中国域名交易资讯网
    $id   = $data[0]['id'];EHU中国域名交易资讯网
    if (empty($id))EHU中国域名交易资讯网
    {EHU中国域名交易资讯网
        $parentid = $pre;EHU中国域名交易资讯网
    }EHU中国域名交易资讯网
    elseEHU中国域名交易资讯网
    {EHU中国域名交易资讯网
        $parentid = $id;EHU中国域名交易资讯网
        get_lastid($parentid);EHU中国域名交易资讯网
    }EHU中国域名交易资讯网
}EHU中国域名交易资讯网
[/code]EHU中国域名交易资讯网
EHU中国域名交易资讯网
演示:http://forum.2fs.cn/forumdisplay.php?forumid=1&tree=1

Arvan 发表于 2003-9-23 19:28EHU中国域名交易资讯网

利用orders控制顺序,添加分类时用递归,查询时直接输出不用递归。

重庆森林 发表于 2003-9-23 19:32EHU中国域名交易资讯网

不懂,帮忙T一下技术帖,落伍需要

Arvan 发表于 2003-9-23 20:09EHU中国域名交易资讯网

$x_db 所用到的数据库类EHU中国域名交易资讯网
[code]EHU中国域名交易资讯网
/*****EHU中国域名交易资讯网
// +-------------------------------------------------EHU中国域名交易资讯网
// | Id: vbf_db.php                                  EHU中国域名交易资讯网
// +-------------------------------------------------EHU中国域名交易资讯网
// | Copyright (c)  EHU中国域名交易资讯网
// | Author:ArvanEHU中国域名交易资讯网
// +-------------------------------------------------EHU中国域名交易资讯网
// | Create Date: 2003-6-23EHU中国域名交易资讯网
// | Modify Date:EHU中国域名交易资讯网
// | Note: EHU中国域名交易资讯网
// |        数据库操作的类EHU中国域名交易资讯网
// | EHU中国域名交易资讯网
// | EHU中国域名交易资讯网
// +-------------------------------------------------EHU中国域名交易资讯网
*****/EHU中国域名交易资讯网
EHU中国域名交易资讯网
class TDb{ EHU中国域名交易资讯网
        var $host;EHU中国域名交易资讯网
        var $user;EHU中国域名交易资讯网
        var $password;EHU中国域名交易资讯网
        var $database;EHU中国域名交易资讯网
EHU中国域名交易资讯网
        var $n;EHU中国域名交易资讯网
        var $result="";EHU中国域名交易资讯网
        var $conn="";EHU中国域名交易资讯网
EHU中国域名交易资讯网
        var $debug = true;EHU中国域名交易资讯网
        var $errMsg = "";EHU中国域名交易资讯网
EHU中国域名交易资讯网
        function TDb($host,$user,$password,$database){EHU中国域名交易资讯网
                $this->host=$host;EHU中国域名交易资讯网
                $this->user=$user;EHU中国域名交易资讯网
                $this->password=$password;EHU中国域名交易资讯网
                $this->conn=@mysql_connect($host,$user,$password) or die("<br><br><b>Err:</b>SQL busy,please try again later!");EHU中国域名交易资讯网
                EHU中国域名交易资讯网
                $this->set_db($database);EHU中国域名交易资讯网
EHU中国域名交易资讯网
                $this->errMsg ="";EHU中国域名交易资讯网
                $this->n = 0;EHU中国域名交易资讯网
        }EHU中国域名交易资讯网
        //end of func tdbEHU中国域名交易资讯网
EHU中国域名交易资讯网
        function exec($sql, $db_name = ''){EHU中国域名交易资讯网
                if (($db_name != '') && ($db_name != $this->database)){EHU中国域名交易资讯网
                        $old_db = $this->database;EHU中国域名交易资讯网
                        $this->set_db($db_name);EHU中国域名交易资讯网
                }EHU中国域名交易资讯网
                $this->n = 0;EHU中国域名交易资讯网
                $this->result=@mysql_query($sql,$this->conn);EHU中国域名交易资讯网
                if (mysql_error() != ""){ EHU中国域名交易资讯网
                        $this->errMsg = mysql_error();EHU中国域名交易资讯网
                        if ($this->debug){EHU中国域名交易资讯网
                                echo "<br><br><b>Err:</b>Fail to execute this SQL query:$sql<br><br>$this->errMsg";EHU中国域名交易资讯网
                        }else{EHU中国域名交易资讯网
                                echo "<br><br><br><b>Err:</b>Please check the query is normal and make sure that It's allowed!";EHU中国域名交易资讯网
                        }EHU中国域名交易资讯网
                        exit;EHU中国域名交易资讯网
                }EHU中国域名交易资讯网
                $this->n = @mysql_affected_rows();EHU中国域名交易资讯网
                if($old_db != ''){EHU中国域名交易资讯网
                        $this->set_db($old_db);EHU中国域名交易资讯网
                }EHU中国域名交易资讯网
                return true;EHU中国域名交易资讯网
        }EHU中国域名交易资讯网
EHU中国域名交易资讯网
        function get_data(){EHU中国域名交易资讯网
                if($this->result==""){EHU中国域名交易资讯网
                        echo "<br><br><b>Err:</b>There is no result please run method exec(/$sql) first";EHU中国域名交易资讯网
                        exit;EHU中国域名交易资讯网
                }EHU中国域名交易资讯网
                $count=0;EHU中国域名交易资讯网
                while($row=mysql_fetch_array($this->result)){EHU中国域名交易资讯网
                        $data[$count]=$row;EHU中国域名交易资讯网
                        $count++;EHU中国域名交易资讯网
                }EHU中国域名交易资讯网
                mysql_free_result($this->result);EHU中国域名交易资讯网
                return $data;EHU中国域名交易资讯网
        }EHU中国域名交易资讯网
        //end of func get_dataEHU中国域名交易资讯网
EHU中国域名交易资讯网
EHU中国域名交易资讯网
        function get_ins_id(){EHU中国域名交易资讯网
                return mysql_insert_id();EHU中国域名交易资讯网
        }EHU中国域名交易资讯网
EHU中国域名交易资讯网
        function free(){EHU中国域名交易资讯网
                mysql_close($this->conn);EHU中国域名交易资讯网
        }EHU中国域名交易资讯网
EHU中国域名交易资讯网
        function set_db($db_name){EHU中国域名交易资讯网
                if($db_name != $this->database){//select new table while they are different EHU中国域名交易资讯网
                        @mysql_select_db($db_name) or die("<br><b>Err:</b>Fail to select $db_name table, make sure it's allowed to do this!");EHU中国域名交易资讯网
                        $this->database=$db_name;EHU中国域名交易资讯网
                }EHU中国域名交易资讯网
                return true;EHU中国域名交易资讯网
        }EHU中国域名交易资讯网
EHU中国域名交易资讯网
        function get_cur_db(){EHU中国域名交易资讯网
                return $this->database;EHU中国域名交易资讯网
        }EHU中国域名交易资讯网
}EHU中国域名交易资讯网
//End of class dbEHU中国域名交易资讯网
[/code]

风月无边 发表于 2003-9-23 21:24EHU中国域名交易资讯网

不用递归就好啊EHU中国域名交易资讯网
全部整理了提供下载啊,呵呵,好东西,就是太简单了些

西瓜 发表于 2003-9-23 21:26EHU中国域名交易资讯网

数据库结构是怎么样的

HanLiu 发表于 2003-9-23 21:27EHU中国域名交易资讯网

无限分类,我以前就搞过,就是感觉不是很满意,分的太多的话,我无法确定它的执行效率怎么样!!不过就3,4及来讲是没有任何问题的,

Arvan 发表于 2003-9-23 21:27EHU中国域名交易资讯网

[quote]Originally posted by [i]西瓜[/i] at 2003-9-23 09:26 PM:EHU中国域名交易资讯网
数据库结构是怎么样的 [/quote]EHU中国域名交易资讯网
EHU中国域名交易资讯网
EHU中国域名交易资讯网
不是给出了吗?

Arvan 发表于 2003-9-23 21:29EHU中国域名交易资讯网

[quote]Originally posted by [i]风月无边[/i] at 2003-9-23 09:24 PM:EHU中国域名交易资讯网
不用递归就好啊EHU中国域名交易资讯网
全部整理了提供下载啊,呵呵,好东西,就是太简单了些 [/quote]EHU中国域名交易资讯网
EHU中国域名交易资讯网
EHU中国域名交易资讯网
使用递归的地方是添加新类的时候用的,如果是树型 论坛的话,就是发新贴的时候用到。其他时候都是查询,不用递归.

赵明亮 发表于 2003-9-23 21:30EHU中国域名交易资讯网

我记得simpleboard就有Arvan论坛类似的功能

小林 发表于 2003-9-23 21:55EHU中国域名交易资讯网

*** 作者被禁止或删除 内容自动屏蔽 ***

小林 发表于 2003-9-23 21:56EHU中国域名交易资讯网

*** 作者被禁止或删除 内容自动屏蔽 ***

Arvan 发表于 2003-9-24 22:43EHU中国域名交易资讯网

输出时order by `main` asc, `orders` ascEHU中国域名交易资讯网
EHU中国域名交易资讯网
 
评论】【加入收藏夹】【打印】【关闭
  • 上一篇文章:[下载]9om_dict php v2.0 - 英汉双解字典下载,不要错过

  • 下一篇文章:win2000+apache+php+mysql+mod_perl+perl+mod_ssl+openssl+ZendOptimizer安装攻略

  • 频道最新
    热门排行