Thinkphp笔记3 模型
2016-04-12 21:37
495 查看
创建应用项目
a) 入口文件index.php
b) 应用常量定义define(“CSS_URL”,XXX);
c) define(“APP_DEBUG”,true); 调整模式为开发调试模式 加载25文件
d) 包含核心程序ThinkPHP/ThinkPHP.php
控制器和视图创建
a) UserController.class.php(命名空间)
b) Home/View/User/login.html
c) Home/View/User_login.html (在配置文件convertion.php里边有定义控制器和模板中间的连接符)
d) Home/View/User_register.html
路由解析
a) index.php?m=XX&c=YY&a=ZZ 基本get模式
b) index.php/XX/YY/ZZ pathinfo路径模式
c) 网址/XX/YY/ZZ rewrite重写模式,index.php被省略
d) index.php?s=/XX/YY/ZZ 兼容模式
e) echo U(“控制器/操作方法”); 查看具体url路由解析模式
配置文件(核心、公共、分组模块)及函数库文件
a) 核心:ThinkPHP/Conf/convertion.php
b) 公共:shop/Common/Conf/config.php
c) 分组模块:shop/Home/Conf/config.php
d) 上边三个配置文件后边的配置变量会覆盖前边的配置变量
e) 函数库文件:
f) 核心:ThinkPHP/Common/functions.php
g) 公共:shop/Common/Common/function.php
h) 分组模块:shop/Home/Common/function.php
模板与tp框架整合
a) 拷贝模板代码到tp框架view目录
b) 拷贝css、img、js静态资源到tp指定目录(shop/public)
c) 在入口文件处把css、img、js路径定义为常量
d) 在模板中通过常量把静态资源引入{$Think.const.常量名}
e) 调整css文件里边的图片路径
f) 常量使用注意:在入口文件是先定义常量,再引入核心文件ThinkPHP.php
空操作和空控制器处理
a) 空操作:在控制器中定义方法function _empty(m,m, arg)
b) 空控制器:定义控制器EmptyController.class.php _empty()方法
项目分组
a) Home Admin分组
跨控制器调用
a) A(“[分组模块/]控制器标志”) 实例化控制器
b) R(“[分组模块/]控制器标志/操作方法”) 实例化控制器同时直接调用指定方法
c) new UserController(); 直接实例化指定的控制器
后台“品”字形页面搭建
a) head left right
b) index (frameset)
c) frame 里边 src= 通过独立路由进行请求
数据模型model应用
mysql数据库操作(增、删、改、查)
【连接数据库配置】
convertion.php
config.php
1. 在config.php做数据库连接配置
2.
制作model模型
a) model本身就是一个类文件
b) 数据库中的每个数据表都对应一个model模型文件
c) 最简单的数据model模型类
字段缓存设置
tp框架执行过程中会使用到数据表中的字段信息,通过sql语句可以查询”show colums from table” ,处于性能考虑,可以把字段缓存,避免每次重复执行sql语句。
可以根据情况对当前的model模型进行个性化设置
在入口文件定义一个调试输出函数,便于系统开发使用
【实例化model的三种方式】
1. goods=new命名空间GoodsModel();2.goods = new 命名空间GoodsModel();
2. goods = D(‘模型标志’);
a) goods=D(“Goods”);b)该goods = D(“Goods”);
b) 该goods是父类Model的对象,但是操作的数据表还是sw_goods
c) obj=D();实例化Model对象,没有具体操作数据表,与M()方法效果一致3.obj = D(); 实例化Model对象,没有具体操作数据表,与M()方法效果一致
3. obj = M();
a) 实例化父类Model
b) 可以直接调用父类Model里边的属性,获得数据库相关操作
c) 自定义model就是一个空壳,没有必要实例化自定义model
d) obj=M(‘数据表标志′);实例化Model对象,实际操作具体的数据表obj = M(‘数据表标志’); 实例化Model对象,实际操作具体的数据表
obj = D(标志);
obj=D();obj = D();
obj = M(标志);
$obj = M();
D()和M()方法的区别:
前者是tp3.1.3里边对new操作的简化方法;
后者在使用就是实例化Model父类
两者都在函数库文件定义ThinkPHP/Common/functions.php
注意:如果没有对应的model模型文件类,也可以直接实例化model对象进行操作
D()和M()方法都可以实例化操作一个没有具体model模型类文件的数据表。
【数据查询】
select()是数据模型的一个指定方法,可以获得数据表的数据信息
返回一个二维数组信息,当前数据表的全部数据信息
1. 配置smarty
a) 配置变量信息
i. convertion.php
ii. Behavior行为配置变量信息(页面底部日志显示配置、smarty配置)
iii. 系统程序里边有一些零散的配置信息
b) 在config.php里边配置smarty使用设置
模板引擎配置参数位置(不能直接修改,在config.php里边重写):
具体使用(从tp引擎变为smarty引擎)
a) css样式如果有{},需要使用{literal}标签禁止smarty解析
b) 关键字Think变为Think 变为 smarty
c) tp引擎会对关键常量进行替换例如:CONTROLLER MODULE
smarty引擎不给替换,需要设置为:{$smarty.const.CONTROLLER}
【各种查询条件设置】
obj=D();创建对象obj = D(); 创建对象
obj -> select(); 查询数据
select 字段,字段 from 表名 where 条件 group 字段 having 条件 order 排序 limit 限制条数;
SELECT%DISTINCT%%FIELD%FROM %TABLE%%JOIN%%WHERE%%GROUP%%HAVING%%ORDER%%LIMIT% %UNION%%COMMENT%
obj−>field(字段,字段);查询指定字段obj -> field(字段,字段); 查询指定字段
obj -> table(数据表); 设置具体操作数据表
obj−>where(参数);参数就是正常sql语句where后边的条件信息例如:(“goodsprice>100andgoodsnamelike‘三obj -> where(参数); 参数就是正常sql语句where后边的条件信息
例如:( “goods_price >100 and goods_name like ‘三%’”)
obj -> group(字段); 根据字段进行分组查询
obj−>having(参数条件);having条件设置obj -> having(参数条件); having 条件设置
obj -> order(‘price desc/asc’) 排序查询
$obj -> limit([偏移量,]条数) 限制查询的条数
sql语句里边具体的条件设置在tp框架model模型里边体现为具体的方法操作
以上方法理论上是父类Model的对应方法
父类model具体存在方法: field() where() limit()
还有一些方法在__call()自动调用函数里边: table() group() order() having()
在__call()魔术方法里边会判断当前的执行方法是否是一个method属性的元素信息,如果存在就会执行执行
以上多个方法是同时使用多个进行条件显示(并且没有顺序要求)
$obj -> limit(5)->field(‘id,name’)->order(‘price asc’) -> table(‘sw_goods’)->select();
以上许多方法执行没有顺序要求,许多方法执行后都是把具体的参数赋予到model属性options里边,最后根据options拼装sql语句。
select()方法原理追踪
总结:
1. config.php做数据库连接配置convertion.php
2. 制作model模型文件
3. 实例化model模型对象
a) new 命名空间\类名
b) D([模型标志]);
c) M([模型标志]);
4. 数据查询select()
5. 各种查询条件设置方法
6. smarty模板引擎切换(Behavior行为里边的配置变量)
【查询数据信息】
info=info = goods -> where()->field(字段)->select();
select()方法
1. 返回一个二维数组信息
2. 返回全部数据表信息
3. 给该方法传递参数
a) select(30) 查询主键值等于30的记录信息
b) select(“10,12,14”) 查询主键值在10、12、14范围的记录信息
4. find()如果我们查询的结果只有一个信息,使用select()会返回一个二维数组
为了使用方便我们会希望返回一个一维数组,这时候可使用find()方法
having()方法设置查询条件,where()设置查询条件
having 和 where区别
① 使用有先后顺序
② where price>100 having price>100
③ where 设置条件,字段必须是数据表中存在的字段
④ having 设置条件,字段必须是select语句查询出来的字段可以使用
相关聚合函数 count() sum() avg() max() min()
以上聚合函数是最后被调用的方法
以上方法可以结合具体条件方法使用
例如:$goods -> where(‘goods_price >1000’)->count(); 大于1000元的商品的总数目
【实现数据添加add】
select()
add() 该方法返回被添加的新记录的主键id值
save()
delete()
两种方式实现数据添加
1. 数组方式数据添加
goods=D(“Goods”);goods = D(“Goods”);
arr = array(‘goods_name’=>’iphone5s’,’goods_weight’=>’109’);
//注意:goods_name和goods_weight是数据表中字段名称
goods−>add(goods -> add(arr);
AR方式实现数据添加
a) ActiveRecord 活跃记录
b) AR规定了程序与数据库之间的关系
c) 什么是AR:
d) ① 一个数据表对应一个类model
e) ② 一条数据记录对应类的一个对象
f) ③ 每个字段对应该对象的具体属性
g) tp框架的AR是假的
goods=D(“Goods”);goods = D(“Goods”);
goods -> goods_name = “htc_one”;
goods−>goodsprice=3000;goods -> goods_price = 3000;
goods -> add();
以上两种方式:数组、AR,最后add都要把新记录的主键id值返回
【收集表单数据入库操作】
1. 制作一个表单
2. 通过$_POST收集信息
3. 通过create()方法实现数据收集,该方法对于非法的字段会自动进行过滤
在create()收集表单方法内部会自动过滤非法的字段信息
【数据修改操作】
select()
add()
save() 实现数据修改,返回受影响的记录条数
delete()
具体有两种方式实现数据修改,与添加类似(数组、AR方式)
1. 数组方式
a) goods=D(“Goods”);b)goods = D(“Goods”);
b) ar = array(‘goods_id’=>100,‘goods_name’=>’lenovo手机’,’goods_price’=>1200);
c) goods−>where(‘goodsid>50′)−>save(goods ->where(‘goods_id>50’)-> save(ar);
2. AR方式
a) goods=D(“Goods”);b)goods = D(“Goods”);
b) goods -> goods_id = 53;
c) goods−>goodsname=“三星手机”;d)goods -> goods_name = “三星手机”;
d) goods -> goods_price = 2000;
e) $goods -> where(‘goods_price>10000’)->save();
以上两种方式如果可行,即要修改全部数据
以上sql语句从技术上可行,从业务上不可行(事故)
tp框架有智能考虑,以上情况的sql语句不被允许执行。
如何执行:
① 明确告诉系统那条sql语句被update更新
② 可以设置where进行sql语句更新操作
save() 返回方法值
0:之前没有问题,执行前后数据没有变化
自然数:受影响的记录条数
false:执行失败
【数据删除及执行原生sql语句】
select()
add()
save()
delete() 返回受影响的记录条数
goods−>delete(30);删除主键值等于30的记录信息goods -> delete(30); 删除主键值等于30的记录信息
goods -> delete(“10,12,13”); 删除主键值等于10 12 13的三条记录
$goods -> where(“goods_id>60”)->delete() 把符合条件的记录都给删除
执行原生sql语句
1. 查询语句query() 返回一个二维数组信息
2. 添加、修改、删除 execute() 返回受影响的记录条数
goods=D(“Goods”);goods = D(“Goods”);
sql = “select * from sw_goods”;
rst=rst = goods -> query($sql);
sql=“selectgoodscategoryid,avg(goodsprice)fromswgoodsgroupbygoodscategoryidhavingavg(goodsprice)>1000”;sql = “select goods_category_id,avg(goods_price) from sw_goods group by goods_category_id having avg(goods_price)>1000”;
goods -> query($sql);
sql=“updateswgoodssetgoodsname=‘htctwo′wheregoodsid=100”;sql = “update sw_goods set goods_name = ‘htc_two’ where goods_id=100”;
goods -> execute($sql);
【数据修改具体实现】
通过路由给一个操作方法传递参数
http://网址/index.php/模块/控制器/方法upd/变量名1/值/变量名2/值/变量名3/值
以上路由是通过get形式给指定的操作传递了三个参数信息
原则三个参数信息接收的时候通过GET接收即可例如:_GET接收即可
例如:_GET[‘变量名1’]; include()
以上参数信息接收太直白,不安全,需要按照框架规则使用下边的方式接收get参数信息
http://网址/index.php/Admin/Goods/upd/name/tom/age/25/addr/beijing
function upd(name,name,age,addr){addr){
name;
age;age;
addr;
}
以上参数表述,如果在请求的时候没有按照规则传递参数,那么当前方法禁止访问。
(除非参数有默认值)
修改商品信息步骤:
1. 在“修改”按钮处把被修改商品id信息通过get形式传递给upd操作
2. 在upd方法里边制作形式参数$goods_id,接收服务器给传递的get变量goods_id
3. 在修改表单里边制作隐藏域goods_id,避免tp框架禁止修改语句执行
4. 在upd操作方法内部有两个逻辑:展现表单、收集表单
【表单验证】
javascript
jquery
在服务器端通过tp框架实现表单验证
用户名、密码、重复密码、邮箱、qq、手机号码、爱好、学历
具体步骤:
1. 制作表单
2. 表单form数据通过create()方法收集(验证功能要求我们必须通过create()方法收集数据)
3. 自定义数据model模型类实现具体验证规则
验证规则的第4个参数说明(0 1 2):
注意:
1. 模型实例化通过new
2. 调用create()方法才可以触发验证执行
总结:
1. 数据添加add() 两种方式:数组、AR
2. 数据修改
a) 注意:需要设置条件(主键id、where)
3. 删除删除 delete()
4. 执行原生sql语句:query() execute()
5. 给操作方法传递参数 /Admin/User/login/id/100/name/tom
a) function login(id,id,name)
6. 表单验证
作业:
1. 在商城后台实现数据的列表查询、删除、添加、修改
a) 入口文件index.php
b) 应用常量定义define(“CSS_URL”,XXX);
c) define(“APP_DEBUG”,true); 调整模式为开发调试模式 加载25文件
d) 包含核心程序ThinkPHP/ThinkPHP.php
控制器和视图创建
a) UserController.class.php(命名空间)
b) Home/View/User/login.html
c) Home/View/User_login.html (在配置文件convertion.php里边有定义控制器和模板中间的连接符)
d) Home/View/User_register.html
路由解析
a) index.php?m=XX&c=YY&a=ZZ 基本get模式
b) index.php/XX/YY/ZZ pathinfo路径模式
c) 网址/XX/YY/ZZ rewrite重写模式,index.php被省略
d) index.php?s=/XX/YY/ZZ 兼容模式
e) echo U(“控制器/操作方法”); 查看具体url路由解析模式
配置文件(核心、公共、分组模块)及函数库文件
a) 核心:ThinkPHP/Conf/convertion.php
b) 公共:shop/Common/Conf/config.php
c) 分组模块:shop/Home/Conf/config.php
d) 上边三个配置文件后边的配置变量会覆盖前边的配置变量
e) 函数库文件:
f) 核心:ThinkPHP/Common/functions.php
g) 公共:shop/Common/Common/function.php
h) 分组模块:shop/Home/Common/function.php
模板与tp框架整合
a) 拷贝模板代码到tp框架view目录
b) 拷贝css、img、js静态资源到tp指定目录(shop/public)
c) 在入口文件处把css、img、js路径定义为常量
d) 在模板中通过常量把静态资源引入{$Think.const.常量名}
e) 调整css文件里边的图片路径
f) 常量使用注意:在入口文件是先定义常量,再引入核心文件ThinkPHP.php
空操作和空控制器处理
a) 空操作:在控制器中定义方法function _empty(m,m, arg)
b) 空控制器:定义控制器EmptyController.class.php _empty()方法
项目分组
a) Home Admin分组
跨控制器调用
a) A(“[分组模块/]控制器标志”) 实例化控制器
b) R(“[分组模块/]控制器标志/操作方法”) 实例化控制器同时直接调用指定方法
c) new UserController(); 直接实例化指定的控制器
后台“品”字形页面搭建
a) head left right
b) index (frameset)
c) frame 里边 src= 通过独立路由进行请求
数据模型model应用
mysql数据库操作(增、删、改、查)
【连接数据库配置】
convertion.php
config.php
1. 在config.php做数据库连接配置
2.
制作model模型
a) model本身就是一个类文件
b) 数据库中的每个数据表都对应一个model模型文件
c) 最简单的数据model模型类
字段缓存设置
tp框架执行过程中会使用到数据表中的字段信息,通过sql语句可以查询”show colums from table” ,处于性能考虑,可以把字段缓存,避免每次重复执行sql语句。
可以根据情况对当前的model模型进行个性化设置
在入口文件定义一个调试输出函数,便于系统开发使用
【实例化model的三种方式】
1. goods=new命名空间GoodsModel();2.goods = new 命名空间GoodsModel();
2. goods = D(‘模型标志’);
a) goods=D(“Goods”);b)该goods = D(“Goods”);
b) 该goods是父类Model的对象,但是操作的数据表还是sw_goods
c) obj=D();实例化Model对象,没有具体操作数据表,与M()方法效果一致3.obj = D(); 实例化Model对象,没有具体操作数据表,与M()方法效果一致
3. obj = M();
a) 实例化父类Model
b) 可以直接调用父类Model里边的属性,获得数据库相关操作
c) 自定义model就是一个空壳,没有必要实例化自定义model
d) obj=M(‘数据表标志′);实例化Model对象,实际操作具体的数据表obj = M(‘数据表标志’); 实例化Model对象,实际操作具体的数据表
obj = D(标志);
obj=D();obj = D();
obj = M(标志);
$obj = M();
D()和M()方法的区别:
前者是tp3.1.3里边对new操作的简化方法;
后者在使用就是实例化Model父类
两者都在函数库文件定义ThinkPHP/Common/functions.php
注意:如果没有对应的model模型文件类,也可以直接实例化model对象进行操作
D()和M()方法都可以实例化操作一个没有具体model模型类文件的数据表。
【数据查询】
select()是数据模型的一个指定方法,可以获得数据表的数据信息
返回一个二维数组信息,当前数据表的全部数据信息
1. 配置smarty
a) 配置变量信息
i. convertion.php
ii. Behavior行为配置变量信息(页面底部日志显示配置、smarty配置)
iii. 系统程序里边有一些零散的配置信息
b) 在config.php里边配置smarty使用设置
模板引擎配置参数位置(不能直接修改,在config.php里边重写):
具体使用(从tp引擎变为smarty引擎)
a) css样式如果有{},需要使用{literal}标签禁止smarty解析
b) 关键字Think变为Think 变为 smarty
c) tp引擎会对关键常量进行替换例如:CONTROLLER MODULE
smarty引擎不给替换,需要设置为:{$smarty.const.CONTROLLER}
【各种查询条件设置】
obj=D();创建对象obj = D(); 创建对象
obj -> select(); 查询数据
select 字段,字段 from 表名 where 条件 group 字段 having 条件 order 排序 limit 限制条数;
SELECT%DISTINCT%%FIELD%FROM %TABLE%%JOIN%%WHERE%%GROUP%%HAVING%%ORDER%%LIMIT% %UNION%%COMMENT%
obj−>field(字段,字段);查询指定字段obj -> field(字段,字段); 查询指定字段
obj -> table(数据表); 设置具体操作数据表
obj−>where(参数);参数就是正常sql语句where后边的条件信息例如:(“goodsprice>100andgoodsnamelike‘三obj -> where(参数); 参数就是正常sql语句where后边的条件信息
例如:( “goods_price >100 and goods_name like ‘三%’”)
obj -> group(字段); 根据字段进行分组查询
obj−>having(参数条件);having条件设置obj -> having(参数条件); having 条件设置
obj -> order(‘price desc/asc’) 排序查询
$obj -> limit([偏移量,]条数) 限制查询的条数
sql语句里边具体的条件设置在tp框架model模型里边体现为具体的方法操作
以上方法理论上是父类Model的对应方法
父类model具体存在方法: field() where() limit()
还有一些方法在__call()自动调用函数里边: table() group() order() having()
在__call()魔术方法里边会判断当前的执行方法是否是一个method属性的元素信息,如果存在就会执行执行
以上多个方法是同时使用多个进行条件显示(并且没有顺序要求)
$obj -> limit(5)->field(‘id,name’)->order(‘price asc’) -> table(‘sw_goods’)->select();
以上许多方法执行没有顺序要求,许多方法执行后都是把具体的参数赋予到model属性options里边,最后根据options拼装sql语句。
select()方法原理追踪
总结:
1. config.php做数据库连接配置convertion.php
2. 制作model模型文件
3. 实例化model模型对象
a) new 命名空间\类名
b) D([模型标志]);
c) M([模型标志]);
4. 数据查询select()
5. 各种查询条件设置方法
6. smarty模板引擎切换(Behavior行为里边的配置变量)
【查询数据信息】
info=info = goods -> where()->field(字段)->select();
select()方法
1. 返回一个二维数组信息
2. 返回全部数据表信息
3. 给该方法传递参数
a) select(30) 查询主键值等于30的记录信息
b) select(“10,12,14”) 查询主键值在10、12、14范围的记录信息
4. find()如果我们查询的结果只有一个信息,使用select()会返回一个二维数组
为了使用方便我们会希望返回一个一维数组,这时候可使用find()方法
having()方法设置查询条件,where()设置查询条件
having 和 where区别
① 使用有先后顺序
② where price>100 having price>100
③ where 设置条件,字段必须是数据表中存在的字段
④ having 设置条件,字段必须是select语句查询出来的字段可以使用
相关聚合函数 count() sum() avg() max() min()
以上聚合函数是最后被调用的方法
以上方法可以结合具体条件方法使用
例如:$goods -> where(‘goods_price >1000’)->count(); 大于1000元的商品的总数目
【实现数据添加add】
select()
add() 该方法返回被添加的新记录的主键id值
save()
delete()
两种方式实现数据添加
1. 数组方式数据添加
goods=D(“Goods”);goods = D(“Goods”);
arr = array(‘goods_name’=>’iphone5s’,’goods_weight’=>’109’);
//注意:goods_name和goods_weight是数据表中字段名称
goods−>add(goods -> add(arr);
AR方式实现数据添加
a) ActiveRecord 活跃记录
b) AR规定了程序与数据库之间的关系
c) 什么是AR:
d) ① 一个数据表对应一个类model
e) ② 一条数据记录对应类的一个对象
f) ③ 每个字段对应该对象的具体属性
g) tp框架的AR是假的
goods=D(“Goods”);goods = D(“Goods”);
goods -> goods_name = “htc_one”;
goods−>goodsprice=3000;goods -> goods_price = 3000;
goods -> add();
以上两种方式:数组、AR,最后add都要把新记录的主键id值返回
【收集表单数据入库操作】
1. 制作一个表单
2. 通过$_POST收集信息
3. 通过create()方法实现数据收集,该方法对于非法的字段会自动进行过滤
在create()收集表单方法内部会自动过滤非法的字段信息
【数据修改操作】
select()
add()
save() 实现数据修改,返回受影响的记录条数
delete()
具体有两种方式实现数据修改,与添加类似(数组、AR方式)
1. 数组方式
a) goods=D(“Goods”);b)goods = D(“Goods”);
b) ar = array(‘goods_id’=>100,‘goods_name’=>’lenovo手机’,’goods_price’=>1200);
c) goods−>where(‘goodsid>50′)−>save(goods ->where(‘goods_id>50’)-> save(ar);
2. AR方式
a) goods=D(“Goods”);b)goods = D(“Goods”);
b) goods -> goods_id = 53;
c) goods−>goodsname=“三星手机”;d)goods -> goods_name = “三星手机”;
d) goods -> goods_price = 2000;
e) $goods -> where(‘goods_price>10000’)->save();
以上两种方式如果可行,即要修改全部数据
以上sql语句从技术上可行,从业务上不可行(事故)
tp框架有智能考虑,以上情况的sql语句不被允许执行。
如何执行:
① 明确告诉系统那条sql语句被update更新
② 可以设置where进行sql语句更新操作
save() 返回方法值
0:之前没有问题,执行前后数据没有变化
自然数:受影响的记录条数
false:执行失败
【数据删除及执行原生sql语句】
select()
add()
save()
delete() 返回受影响的记录条数
goods−>delete(30);删除主键值等于30的记录信息goods -> delete(30); 删除主键值等于30的记录信息
goods -> delete(“10,12,13”); 删除主键值等于10 12 13的三条记录
$goods -> where(“goods_id>60”)->delete() 把符合条件的记录都给删除
执行原生sql语句
1. 查询语句query() 返回一个二维数组信息
2. 添加、修改、删除 execute() 返回受影响的记录条数
goods=D(“Goods”);goods = D(“Goods”);
sql = “select * from sw_goods”;
rst=rst = goods -> query($sql);
sql=“selectgoodscategoryid,avg(goodsprice)fromswgoodsgroupbygoodscategoryidhavingavg(goodsprice)>1000”;sql = “select goods_category_id,avg(goods_price) from sw_goods group by goods_category_id having avg(goods_price)>1000”;
goods -> query($sql);
sql=“updateswgoodssetgoodsname=‘htctwo′wheregoodsid=100”;sql = “update sw_goods set goods_name = ‘htc_two’ where goods_id=100”;
goods -> execute($sql);
【数据修改具体实现】
通过路由给一个操作方法传递参数
http://网址/index.php/模块/控制器/方法upd/变量名1/值/变量名2/值/变量名3/值
以上路由是通过get形式给指定的操作传递了三个参数信息
原则三个参数信息接收的时候通过GET接收即可例如:_GET接收即可
例如:_GET[‘变量名1’]; include()
以上参数信息接收太直白,不安全,需要按照框架规则使用下边的方式接收get参数信息
http://网址/index.php/Admin/Goods/upd/name/tom/age/25/addr/beijing
function upd(name,name,age,addr){addr){
name;
age;age;
addr;
}
以上参数表述,如果在请求的时候没有按照规则传递参数,那么当前方法禁止访问。
(除非参数有默认值)
修改商品信息步骤:
1. 在“修改”按钮处把被修改商品id信息通过get形式传递给upd操作
2. 在upd方法里边制作形式参数$goods_id,接收服务器给传递的get变量goods_id
3. 在修改表单里边制作隐藏域goods_id,避免tp框架禁止修改语句执行
4. 在upd操作方法内部有两个逻辑:展现表单、收集表单
【表单验证】
javascript
jquery
在服务器端通过tp框架实现表单验证
用户名、密码、重复密码、邮箱、qq、手机号码、爱好、学历
具体步骤:
1. 制作表单
2. 表单form数据通过create()方法收集(验证功能要求我们必须通过create()方法收集数据)
3. 自定义数据model模型类实现具体验证规则
验证规则的第4个参数说明(0 1 2):
注意:
1. 模型实例化通过new
2. 调用create()方法才可以触发验证执行
总结:
1. 数据添加add() 两种方式:数组、AR
2. 数据修改
a) 注意:需要设置条件(主键id、where)
3. 删除删除 delete()
4. 执行原生sql语句:query() execute()
5. 给操作方法传递参数 /Admin/User/login/id/100/name/tom
a) function login(id,id,name)
6. 表单验证
作业:
1. 在商城后台实现数据的列表查询、删除、添加、修改
相关文章推荐
- PHP——数组_学习笔记
- ThinkPHP 笔记2 路由 控制器 视图
- ThinkPHP 笔记1 起步
- 分享3个国内可用速度较快的NTP服务器地址
- FTP之FileZilla Server
- PHP——函数二_学习笔记
- PHP——函数_学习笔记
- Phpstorm10 破解方法
- php增删改查等常用方法封装
- laravel创建服务提供者实例
- php 封装分页查询类
- mysql 启动失败 和 php路径错误 以及 php 无法显示的问题
- YII2 日志
- PHP 单例模式
- 嵌入式 busybox自带的tftp、telnet、ftp服务器
- 【PHP】定时计划没有执行PHP脚本以及解决方案
- PHP获取xml中值的几种方法简单总结
- PHP
- 使用php技术实现无刷新的上传文件
- Zeppelin下使用anaconda和matplotlib