代码改变世界

传智播客 韩顺平 php视频教程 笔记心得 zend.framework.第7——14讲 数据采集系统源代码

2012-07-31 09:03  java环境变量  阅读(367)  评论(0编辑  收藏  举报

 源代码下载地址:http://download.csdn.net/detail/ibmfahsion/4465080

 

新增全局控制器,当希望多个视图view共享一个控制器Controller,建议创建一个全局控制器,有利于给项目减肥,减少控制器的个数。

 

提示成功或者失败的信息。

 

 

 

 

 

 

控制器链。

 

zend framework 9讲综合应用-数据采集系统4

 

框架里面建议用绝对路径。

Ajax jquery在框架中的引用。定义都是一种资源。

Public

 

 

<img  src='/images/logo.gif' />注意用这种引用路径。

 

验证与安全增强

<scripttype="text/javascript" src='/js/my.js'>

<!--

 

//-->

</script>

<linkrel='stylesheet'href='/css/my.css'type='text/css'/>

<h1>投票</h1>

 

  //在服务对输入进行一个验证。

 

客户端有js验证,在服务对输入进行一个验证。

为了双重的安全。

Js正则表达式

服务器端:

使用php处理 ;异常;php正则表达式

 

render: 直接显示本控制器所对应的视图

不指定render

结果:{当前moule}/{当前Controller}/{当前Action}.phtml

 

 

一般不跳转到别的控制器去,用法比较单一。

_forward:代表本项目中的控制器之间来回的转发。

可以转向到本控制器的某个函数,也可以跳转到别的控制器的某个函数。

$this->_forward('bar')  转到当前控制器

{当前moule}/{当前Controller}/bar

 

 

 

 

{当前moule}/foo/bar

$this->_forward('err','fool');

 

 

 

  $this->_forward('err','fool',’hoge’);

{hoge}/foo/bar

 

 

 

Redirect:代表本项目中的控制器之间来回的转发,同时还可以跳转到外网去。

 

可以再本网站的控制器转向

$this->redirect('/hoge');

$this-> redirect( ('/hoge/foo');

$this-> redirect( ('/hoge/foo/bar');

还可以直接调向外网的网址。

 

特殊情况layout

 

zend+framework+10+综合应用-数据采集系统5

<scripttype='text/javascript'>

alert('恭喜您,投票成功!');

//history.back();

window.location.href='/index/index';

</script>

 

返回刷新:

名称

描述

投票数

投票

李维斯

天仙配

11

投票

刘德华

冰雨

5

投票

张学友

情书

4

投票

回音哥

我的歌声里

6

投票

张柏芝

曾经

5

投票

 

zend+framework+11+多表操作1

 

--建立学生表

 

create  table  student(

sid  char(8) primary key,

sname  varchar(64) not null  default  '',

ssex  char(2)  not null  default '',

sdept  varchar(32)  not null  default '',

sage  tinyint  unsigned  default  0,

saddress  varchar(64)  not  null  default ''

)

 

--课程表

 

create  table course(

cid  char(2)   primary key,

cname  varchar(64)    not null   default  '',

ccredit  tinyint  unsigned  not null default  0

 

 

--建立选课表

create  table  studCourse

(

stuCouseId  int  unsigned  primary  key  auto_increment,

sid  char(8)  not  null  default  '',

cid  char(2)  not null  default  '',

grade  tinyint  unsigned  not  null  default 0,

foreign key  for_sid(sid)  references  student(sid),

foreign  key  for_cid(cid)  references  course(cid)

)

 

 

用外键  必须数据库引擎为 innodb

外键类型大小都一样

 

学生选课系统的三张表(可以扩展管理员表,老师表)

 

 

数据库三范式:数据可以通过关联的关系获取。当两张表之间有多对多的关系的时候,往往会需要一张中间表进行对应和转换。Many  to  many的关系。

多对多的关系处理不好,就会出现冗余。

Student                studCourse                            course

 

 

 

部门表                                    雇员表

 

也可能存在多对多的关系 

 

qq用户表例如好友表

 

 

zend  studio  ide 也可以通过编写phpunit来进行单元测试。

 

 

PHP视频教程+zend+framework+12+多表操作2

 

select sname , ssex  from student  where  ssex=''   and  sdept='计算机'

 

 

//根据多个主键查询记录 查询学生号的信息  find中用数组,必须对应的是主键。

        $stu=$studentModel->find(array("20040001","20040002"))->toArray();

韩顺平 PHP视频教程 zend framework13讲多表操作3

取回一条记录。主要应对效率的提高,如果你认为只有1条记录或者有意识的认为只有一条记录,来提高效率。

//如何只取回一条记录 distinct

         //一部分字段不能用fetchall 表模型,只能用适配器Adapter

         //Adapter简单的原则:1如果是查询部分字段  如果是多表查询  3 如果要考虑sql注入问题也使用$adapter->query->fetchAll()

         //表模型:1如果是增加、删除、修改、查询某张单表的全部字段,也可以考虑分页,可以使用表模型。 

 

韩顺平+PHP视频教程+zend+framework+14+多表操作4

 

//查询各科考试不及格的学生的名字,科目和分数

首先考虑到会使用到几张表:

学生的名字  student

科目的名称  course

分数        studcourse  选课表

 

三张表结合,三张表之间的关系。

 

三张表之间有相同的字段。

加条件限制,避免出现笛卡尔积。

 

Sql语句写的时候从左到右,执行的时候从右到左,写的好的sql专员,核心的关键字放在右边;

传说中sql关键字大写也能提高效率。

多表查询尽量少用;尽量不要用多表。

 

参数绑定:  同时能防止注入。

//参数绑定,写法1

        $sql=$db->quoteInto("select max(grade),min(grade) from studcourse where cid=?", 11);

       

        $res=$db->query($sql)->fetchAll();

        print'<pre>';

    print_r($res);

    print'</pre>';

    exit();

 

 

//参数绑定,写法2

    

       

        $res=$db->query("select max(grade),min(grade) from studcourse where cid=:cid AND grade=:grade",

        array(

          'cid'=>11,

          'grade'=>60

        ))->fetchAll();

        print'<pre>';

    print_r($res);

    print'</pre>';

    exit();

 

one   to   one  两张表11的关系;人和身份证号

one   to   many  员工表emp——部门表 dept

many  to   many  多对多的关系,往往需要中间表

 

多表查询,临时表。

 

select  '林青霞' ,c.cname,temp.grade from(  select  sc.grade,sc.cid  from

 studcourse sc  where sid=(select sid  from  student where sname= '林青霞' ) )temp,

course  c  where temp.cid=c.cid