频道直达 - 学院 - 下载 - 交易 - 特效 - 字库 - 手册 -排名-工具- 繁體
网页教学网站开发 设为首页
加入收藏
联系我们
建站搜索: 常用广告代码   用户注册 | 用户登陆
您当前的位置:中国建站之家 -> 网站开发设计技术教程 -> PHP教程 -> 菜鸟初学设计,希望大家多多指点,并帮助实现。谢谢

菜鸟初学设计,希望大家多多指点,并帮助实现。谢谢

作者:未知  来源:转载  发布时间:2005-7-21 8:44:54  发布人:acx

减小字体 增大字体

书写的比较规范,思路清晰。希望大家各述己见 --- 唠叨
================================================
    

分类管理(不完整设计-概述)(1)
qzhl 发表于 2002-3-13 17:57 PHP编程 ←返回版面     

class.id         //分类号 唯一
class.classStr         //分类字符串 = 父分类字符串+","+父id 用于 选出所有子分类
class.parentId        //父Id 可以用上面的字段得到 不一定能实现


功能模块说明:

addClass            //添加分类
        入口:
            [parentId]            //父分类号
          <name>                    //类名
          [其他字段]            //非必须字段
        出口:<errNo>
listClass            //根据模版样式输出分类
      入口:
        <$rootId>                //要显示分类的根节点的 id  即显示所有 rootId 的子节点
        [$tree]                    //是否全部展开
        //默认的模版变量用来确定模版
modiClass            //修改单独分类的信息
      入口:
        <id>
            <必要的字段>
            [可选的字段]
modiClassForm
         入口
            [$id]                //分类号
        出口
          各字段值发送给 modiClass
delClass            //删除分类 如果包含子分类 则不允许删除
        入口:
            <$id>



分类管理(不完整设计-数据结构)(2)

分类表

CREATE TABLE class (
  classStr varchar(10) NOT NULL default ''0'',    分类字符串*
  parentId int(11) default ''0'',                                父分类号
  id int(11) NOT NULL default ''0'',                        分类号*//自动增长
  logo varchar(50) default NULL,                            图标
  name varchar(20) NOT NULL default '''',                类名*
  description varchar(50) default ''Welcome'',    描述
  dispOrder int(11) default NULL,                            显示顺序
  masterId int(11) default NULL,                            管理员号
  masterName varchar(20) default NULL,                管理员名
    [此处可再扩充发言表管理员的名字 用于在发言管理中]
  childNum int(11) default NULL,                            子节点数量
  modiTime datetime default NULL,                            最后修改时间
  UNIQUE KEY id (id)                                                    分类号 唯一
) TYPE=MyISAM;

发言表

CREATE TABLE msg (
  bid int(11) NOT NULL default ''0'',        分类号
  id int(11) NOT NULL default ''0'',        分类内序号
  topic varchar(100) NOT NULL default '''',    主题
  context text,                    内容
  author varchar(20) NOT NULL default '''',    作者
  email varchar(40) default '''',            邮箱
  wdate datetime NOT NULL default ''0000-00-00 00:00:00'',
                        发言时间
  levelnum tinyint(3) unsigned NOT NULL default ''0'',
                        回复层次
  orderid float NOT NULL default ''0''        排序号
) TYPE=MyISAM;


分类管理(不完整设计-添加分类)(3)

功能:

添加分类(addClass)
0.功能简述:
    

1 接口参数

  1.1 入口

  [parentId]            //父分类号

  <name>            //类名
  [其他字段]            //非必须字段

  1.2 出口

  [errNo]            //错误码用 include 发送给 错误 显示功能(区分语言)

2 变量声明

  var parentId;
  var classStr;

3 功能实现

  if(empty($name)){
    errNo = N;
    include_once(错误功能页面);    //错误页面根据语言输出错误并返回(见 func.txt)
  }
  //if(empty($parentId)):

    $parentId = 0;//默认就是 0 此句不用写
    // id 设置为自动增长
    INSERT INTO class(classStr,parentId,name,[其他字段]) VALUES(0,0,$name,[其他字段]);
    
  //if(!empty($parentId)):
    SELECT @classStr:=CONCAT(classStr,'','',id) FROM class WHERE id=$parentId; //CONCAT 连接字符串
    INSERT INTO class(classStr,parentId,name,[其他字段]) VALUES(@classStr, $parentId, $name, [其他字段]);


分类管理(不完整设计-权限管理)(4)

权限管理
chkPower 功能
0 功能简述
    根据 管理模式 判断当前用户 是否可以通过本模块。
1 接口参数
    1.1 入口
        session(user[''id''])
        <$id>                                        //需要判断权限的分类的 id
        session(user[''power''])    //user[''power''] = ''id,id,id''
    1.2 出口
        errNo                                        //没有权限
      user[''power''] .= '',id''    //认证通过
2 实现

    判断 id 是否在 session(user[''power'']) 中
        是:通过
        否:管理模式 0:
                    SELECT @classStr:=classStr FROM class WHERE id = $id
         //判断当前类的 分类字符串 是否包含 user[id] 所管理的任何一个分类 是 则通过 说明当前分类是子分类
         SELECT <任何字段> FROM class WHERE @classStr LIKE CONCAT(''%'',id,''%'') AND masterId = session(user[id])
                 如果返回的记录集不为空 则通过。
                    并 user[''power''] .= $id;
                管理模式 1:
                    //判断 当前用户是否在 当前类管理员列表中 是 则通过。
          SELECT <任何字段> FROM class WHERE masterId LIKE CONCAT(''%'',user[''id''],''%'') AND id = $id
        如果没有通过:
                    errNo = n;
                    include(error.php)


分类管理(不完整设计-显示分类)(5)

显示分类(listClass)

0 功能描述

1 接口参数

  1.1 入口

    $rootId    要显示分类的根节点的 id  即显示所有 rootId 的子节点
    $tree    是否全部展开
    //默认的模版变量
  1.2 出口
    errNo

2 变量声明

  var $result;        //记录集
  var $nodeNum;        //节点数量
  var $allNodeArray;    //所有节点数组
  var $html;        //模板变量

3 函数声明

  function getResult(rootId,tree)      
    //得到一个需要的记录集
  function pAllNode1(level,rootNodeId,nodeArray[][])
    //遍历函数 level 表示输出层次 nodeArray 记录集数组
  function buildTree(black,currentNode)
    //输出函数 调用 模板类 调用模板 赋值模板变量 追加块 得到树形结构

4 功能实现
//连接数据库
$result = getResult($rootId,$tree);
$nodeNum = mysql_num_rows($result);
$allNodeArray = array(nodeNum);
$html = new Template();
//将记录集放入二维数组。将父id放入数组第一个元素
for(i=0;i<nodeNum;i++){
  $allNodeArray[i] = mysql_fetch_array($result);
}
//关闭数据库
$html->set_file(''listClass'',''listClass.tpl'');
$html->set_block(''listClass'',''node'',''nodes'');

pAllNode1(0,n,$allNodeArray);

$html->pparse(''out'',''listClass'');

/*********** function **********************************************/

  //得到一个需要的记录集
  function getResult(rootId,tree){
    //参数说明:
    //rootId 要显示分类的根节点的 id  即显示所有 rootId 的子节点
    //tree 是否全部展开

    if(empty($rootId)) $rootId = 0;

    if(tree=false){ // 只列出一层
      strSQL =
        SELECT @classStr:=classStr FROM class WHERE id=$rootId;
    SELECT name,classStr,[其他字段] FROM class
    WHERE classStr LIKE CONCAT(@classStr, '','', ''%'') AND classStr NOT LIKE CONCAT(@classStr, '','', ''%,%'');
    }
    if(tree=true){  //列出整棵树
      strSQL =
    SELECT @classStr:=classStr FROM class WHERE id=$rootId;
    SELECT name,classStr,[其他字段] FROM class
    WHERE classStr LIKE CONCAT(@classStr, '','', ''%'')
    }
    return mysql_quary(strSQL);
  }

  //遍历函数 level 表示输出层次 nodeArray 记录集数组

  function pAllNode(level,rootNodeId,nodeArray){
    //如果当前节点的父id等于跟节点id
    while(current(nodeArray)[0]==rootNodeId){
      //输出当前节点
      //递归调用,current(nodeArray)[1] 表示: 当前节点id, 数组不变
      pAllNode(level+1,current(nodeArray)[1],nodeArray);
      next(nodeArray);
    }
  }

  //遍历函数1
  function pAllNode1(level,rootNodeId,nodeArray[][]){
    i=0;
    //用于存放本层的元素
    tmpArr = array();
    //从数组中搜索所有元素 生成第一层元素
    while(list($k,$v)=each(nodeArray)){
      //如果元素的 父id 即nodeArray[][0] 或者 $v[0]==rootNodeId
      if($v[0]==rootNodeId){
        //生成新的数组只包含第一层的元素 即 父节点为 rootNodeId
        tmpArr[i]=$v[0];
        //删除原数组中已选出的元素
        unset(nodeArray[$k]);
        //新数组的下标加一
        i++;
      }
    }
    while(list($k,$v)=each(tmpArr)){
      //生成缩进
      for(i=0;i<level;i++) $str .= " ";
      //建立当前节点
      buildTree($str,$v[2]);
      //此时数组 nodeArray 已经去除了第一层的元素
      pAllNode1(level+1,$v[1],nodeArray);
    }
  }

  //输出函数 调用 模板类 调用模板 赋值模板变量 追加块 得到树形结构
  //对所有需要的变量进行替换 模板不同 则生成两种类型的页面(只有类名的树形结构,有详细信息的列表)
  //black 生成的缩进空格
  function buildTree(black,currentNode){
    set_var(''链接'',currentNode[1]);
    set_var(''name'',currentNode[2]);
    set_var(''black'',black):
    parse(''nodes'',''row'',ture);
  }
  //块结构
<!-- node BEGIN -->
{black缩进空格}<a href={链接?classid=n}>{name}</a>[其他需要输出的内容]
<!-- node END -->

/*******************************************************************/



分类管理(不完整设计-修改分类)(6)

修改分类信息(modiClass)
0.实现简述:
    

1 接口参数

  1.1 入口
    <id>
        <必要的字段>
        [可选的字段]

  1.2 出口

    [errNo]

2 变量声明


3 功能实现
    if (<必要字段> 不存在) errNo = n include(错误处理功能)
  
  update 数据 where id = $id;



分类管理(不完整设计-修改表单)(7)

修改表单(modiClassForm)
0.实现简述:
    

1 接口参数

  1.1 入口

  [$id]                //分类号

  1.2 出口
  各字段值发送给 modiClass

2 变量声明


3 功能实现

//根据 $id 查询数据库得到相应的信息
//调用 修改类表单模板用查到的数据替换相应的表单元素值。
//输出给用户。
//用户修改后提交给 modiClass 功能。


分类管理(不完整设计-遍历函数)(8)

<?
  function pAllNode($level,$rootNodeId,$nodeArray){
    reset($nodeArray);
    $i=0;
    //用于存放本层的元素
    $tmpArr = array();
    //从数组中搜索所有元素 生成第一层元素
    while(list($k,$v)=each($nodeArray)){
      //如果元素的 父id 即nodeArray[][0] 或者 $v[0]==rootNodeId
      if($v[0]==$rootNodeId){
        //生成新的数组只包含第一层的元素 即 父节点为 rootNodeId
        $tmpArr[$i]=$v;
        //删除原数组中已选出的元素
        //unset($nodeArray[$k]);
        //新数组的下标加一
        $i++;
      }
    }
    reset($tmpArr);
    //生成缩进
    for($j=0;$j<$level;$j++) $str .= " ";
    while(list($k,$v)=each($tmpArr)){
      //输出当前节点
      print($str.$v[1].$v[2]."<br>");
      //此时数组 nodeArray 已经去除了第一层的元素
      pAllNode($level+1,$v[1],$nodeArray);
    }
  }

$tt = array(
array(0,1,"b"),
array(0,2,"b"),
array(1,3,"b"),
array(1,4,"b"),
array(0,5,"b"),
array(2,6,"b"),
array(6,7,"b")
);
pAllNode(0,0,$tt);

?>


分类管理(不完整设计-配置文件)(9)

配置文件说明:
<?
/*安装时需要初始化的本地信息内容*************************************/
//分类管理的目录信息
global $PATH_INFO;
$PATH_INFO = array ();
//数据库配置信息
global $DB_INFO;
$DB_INFO = array ();
/********************************************************************/
/*可用的模板设置添加*************************************************/
//模板样式添加
global $TPL_TYPE;
$TPL_TYPE = array (
    ''管理''    => '''',
    ''用户''    => ''''
);
//语言添加
global $LANGUAGE;
$LANGUAGE = array ();
/********************************************************************/
//定义程序运行时消息包括两种语言
global $RUNTIME_MSG;
$RUNTIME_MSG = array(
    ''cannot_is_null''    => array(''不能为空'',''e不能为空''),
  ''submit_success''    => array(''提交成功'',''e提交成功'')
);
//界面默认配置
global $MSGBD_CONF;
$MSGBD_CONF = array (
    ''tpltype''            => $TPL_TYPE[0],                            //默认模板样式设置
  ''language''        => $LANGUAGE[0]               //默认语言设置
);
//默认管理模式
global $MANAGE_MODEL;                                                    // 0,继承树形管理,1,管理员判断管理
?>


将本文收藏到QQ书签与更多好友分享
[打 印]
[] [返回上一页] [收 藏]
下一篇文章:PHP应用经典技巧二则
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
精彩推荐
热门文章
· 注册码大全二
· 注册码大全四
· 注册码大全一
· 要10G免费网络硬盘的请进..
· 通过google 赶快来赚美金..
· 注册码大全十
· 头像-qq头像(qq新头像)4..
· 让你轻松架设FTP服务器1..
· 注册码大全三
· 梦幻背景图片7
· 卡通动物图片6
· 网页制作素材-按钮素材2..
· 让你轻松架设FTP服务器5..
· 风景图片8
· 注册码大全九
· 让你轻松架设FTP服务器2..
关注此文读者还看过
· 网页在线人数统计的做法..
· 在C#中使用XML指南之读取..
· 用PHP产生动态的影像图[..
· Flash MX 2004图文教程(..
· 实例讲解JSP Model2体系..
· Photoshop打造撕裂的旧海..
· bbs的数据结构和存储过程..
· 2007年中国博客近亿 博客..
· Dreamweaver的操作诀窍点..
· 与高手过招,快来参加9月..
· 支持中文的无组件文件上..
· Dreamweaver MX 2004从零..
· 不用Global.asa实现在线..
· 太极数据500M/ASP/免费双..
· 为什么我在中文win2000+..
· 谈谈网站设计的10个要点..
相关文章
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 人才招聘
网站合作、内容监督、商务咨询:QQ: 9576619
Copyright ? 2005--2008 中国建站之家版权所有
粤ICP备05092265号