仓酷云

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

[学习教程] PHP教程之菜鸟初学设计,但愿人人多多指导,并帮...

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

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

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

x
兴趣可能会慢慢消亡,所以适当培养兴趣会激发自己无线的乐趣,有了乐趣,编程有啥难的。初学|设计   书写的对照标准,思绪明晰。但愿人人各述己见 --- 絮聒
================================================
   

分类办理(不完全设计-概述)(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,办理员判别办理
?>

  完成一个功能齐全的动态站点
简单生活 该用户已被删除
21#
发表于 2015-6-11 19:05:14 | 只看该作者
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
海妖 该用户已被删除
20#
发表于 2015-6-6 03:06:10 | 只看该作者
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
谁可相欹 该用户已被删除
19#
发表于 2015-5-12 02:51:44 | 只看该作者
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
分手快乐 该用户已被删除
18#
发表于 2015-5-6 14:09:43 | 只看该作者
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
第二个灵魂 该用户已被删除
17#
发表于 2015-5-1 20:11:21 | 只看该作者
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
冷月葬花魂 该用户已被删除
16#
发表于 2015-4-21 23:52:40 | 只看该作者
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
小魔女 该用户已被删除
15#
发表于 2015-4-15 04:24:28 | 只看该作者
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
飘灵儿 该用户已被删除
14#
发表于 2015-4-10 09:07:28 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
因胸联盟 该用户已被删除
13#
 楼主| 发表于 2015-4-9 07:24:53 | 只看该作者
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
乐观 该用户已被删除
12#
发表于 2015-4-7 00:15:48 | 只看该作者
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
莫相离 该用户已被删除
11#
发表于 2015-3-31 04:56:17 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
10#
发表于 2015-3-26 18:29:20 | 只看该作者
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
爱飞 该用户已被删除
9#
发表于 2015-3-23 18:55:10 | 只看该作者
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
透明 该用户已被删除
8#
发表于 2015-3-17 04:12:13 | 只看该作者
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
柔情似水 该用户已被删除
7#
发表于 2015-3-15 22:28:57 | 只看该作者
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
不帅 该用户已被删除
6#
发表于 2015-3-8 12:09:28 | 只看该作者
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
再见西城 该用户已被删除
5#
发表于 2015-2-26 05:36:17 | 只看该作者
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
admin 该用户已被删除
地板
发表于 2015-2-8 20:29:21 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
飘飘悠悠 该用户已被删除
板凳
发表于 2015-2-4 20:08:47 | 只看该作者
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-10 23:23

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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