>>> 帝国网站管理系统5.1开源测试版下载
帝国CMS进入开源时代
 帝国论坛技术交流区网络编程[转帖] 无限分类&树型论坛的实现 【本版专题贴子】  
主题:[转帖] 无限分类&树型论坛的实现 [加入收藏夹]   

wm_chief
用户头衔:管理员

精华贴   :21
发贴数   :47888
经验值   :109431
注册时间:2002-10-30
信息 搜索 好友 发送悄悄话 开源第一波:帝国备份王2008开源版发布】   [第 1 楼]
[转帖] 无限分类&树型论坛的实现
作者:chilly


数据表参考:


代码:--------------------------------------------------------------------------------
CREATE TABLE `mf_sort` (
`sortid` SMALLINT( 3 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`main` TINYINT( 2 ) UNSIGNED NOT NULL ,
`parentid` SMALLINT( 3 ) UNSIGNED NOT NULL ,
`layer` SMALLINT( 3 ) UNSIGNED NOT NULL ,
`orders` TINYINT( 2 ) UNSIGNED NOT NULL ,
`sort` VARCHAR( 100 ) NOT NULL ,
PRIMARY KEY ( `sortid` ) ,
INDEX ( `main` , `parentid` , `layer` , `orders` )
);
--------------------------------------------------------------------------------


关键的函数

PHP:--------------------------------------------------------------------------------
function get_main_layer_orders($parentid)
{
    global $x_db;
    $sql  = "select `main`, `layer`, `orders` ";
    $sql .= "from `mf_sort` ";
    $sql .= "where `postid`='$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);
    }
}






[零基础入门教程] [模板制作教程] [采集使用教程]
2003-09-25 10:09:16 已设置保密 顶部 回复 引用 报告 编辑 删除

sunlang
用户头衔:举人

精华贴   :1
发贴数   :514
经验值   :1764
注册时间:2002-10-30
信息 搜索 好友 发送悄悄话 《帝国网站管理系统》零基础实例入门教程】   [第 2 楼]

帅哥,举个应用实例吧
不是很懂喔




2003-09-26 08:58:51 已设置保密 顶部 回复 引用 报告 编辑 删除

快速回复
内容

表情
使用EBB代码 使用smile代码 显示签名 自动分析url 自动分析img
     【进入高级模式】   (按 Ctrl+Enter 直接提交)
    顶部  加入收藏夹
关于帝国 | 广告服务 | 联系我们 | 法律声明 | 隐私条款 | 许可协议
Powered by: EBB Version 2.2.1