PHP.29-TP框架商城应用实例-后台6-商品会员添加-价格、级别
首先把需求分析搞清楚
主要实现两个功能
1、会员管理,设置成为会员的要求
2、添加商品时,可设置会员优惠价格
具体实现
1、建表【会员级别限定表p39_member_level{Id,级别名称,积分下限,积分上限}、会员价格表p39_member_price{会员价格,积分Id,商品Id}】
drop table if exists p39_member_level;
create table p39_member_level
(
id mediumint unsigned not null auto_increment comment 'Id',
level_name varchar(30) not null comment '级别名称',
jifen_bottom mediumint unsigned not null comment '积分下限',
jifen_top mediumint unsigned not null comment '积分上限',
primary key (id)
)engine=InnoDB default charset=utf8 comment '会员级别';
p39_member_level
drop table if exists p39_member_price;
create table p39_member_price
(
price decimal(10,2) not null comment '会员价格',
level_id mediumint unsigned not null comment '级别Id',
goods_id mediumint unsigned not null comment '商品Id',
key level_id(level_id),
key goods_id(goods_id)
)engine=InnoDB default charset=utf8 comment '会员价格';
p39_member_price
2、使用Gii生成代码

配置代码生成配置文件/Gii/Table_configs/p39_member_level.php【会员级别的数量级太少,不需搜索表单】

测试

3、在添加商品页面可以设置会员价格
3.1修改控制器GoodsController.class.php-add(),使添加页面打印所有的会员级别

3.2修改add.html表单,循环输出【因为是多个会员级别,而name需要插入库,应为会员级别id,所以使用数组存储多个会员价格】


3.3提交表单,会员价格数据插入会员价格表{会员价格,积分Id,商品Id}
注:因为为商品插入会员价格,需要获取商品id,而商品id只有在添加商品成功后才生成,所以使用钩子函数_after_insert()
1、价格必须为数字,强制转换为float; 2、价格必须大于0,无数值无法插入,if($_v>0)
//钩子方法_after_insert:添加操作成功后执行
protected function _after_insert($data, $option)
{$mp = I('post.member_price'); //接收post提交过来的会员价格数据
$mpModel = D('member_price');
foreach ($mp as $k => $v)
{
$_v = (float)$v; //强制转为浮点型,以免插入字符等错误数据
//设置会员价格>0就插入到表中
if($_v > 0)
{
$mpModel->add(array(
'price' => $_v,
'level_id' => $k, //级别Id
'goods_id' => $data['id'],
));
}
}
}
$data => 将要插入商品表中数据

测试


管理首页,左侧按钮连接到页面


PHP.29-TP框架商城应用实例-后台6-商品会员添加-价格、级别的更多相关文章
- PHP.31-TP框架商城应用实例-后台7-商品会员修改-页面优化,多表数据更新
商品表修改功能 1.页面优化,类似添加页面 <layout name="layout" /> <div class="tab-div"> ...
- PHP.32-TP框架商城应用实例-后台8-商品相册-添加
商品相册[是商品的其他相片] 添加相册需求: 每张图片生成三张缩略图{50*50.350*350.650*650} 1.建表p39_goods_pic{id,pic,sm_pic,mid_pic,bi ...
- PHP.30-TP框架商城应用实例-后台6-商品会员价格删除-外键,级联操作
商品会员价格删除 需求:当删除一件商品时,这件商品对应的会员价格也应该从会员价格表{price,level_id,goods_id}中删除掉. 有两种删除方法 1.在钩子函数_before_delet ...
- PHP.43-TP框架商城应用实例-后台18-商品属性3-库存量管理
库存量管理 思想:为商品的每个多选属性设置库存量!!要把多选属性排列组合分别指定库存量!! 效果如下:[由商品已经添加的属性决定] 1.建表goods_number{goods_id,goods_nu ...
- PHP.24-TP框架商城应用实例-后台1-添加商品功能、钩子函数、在线编辑器、过滤XSS、上传图片并生成缩略图
添加商品功能 1.创建商品控制器[C] /www.test.com/shop/Admin/Controller/GoodsController.class.php <?php namespace ...
- PHP.48-TP框架商城应用实例-后台23-权限管理-权限验证
权限验证 1.登录控制器 2.通过tp验证码类生成验证码图片 3.在管理员模型增加登录验证规则 4.后台中所有的控制器必须先登录才能访问 思路:在访问任何一个控制器之前都判断一个session即可,= ...
- PHP.28-TP框架商城应用实例-后台5-多表操作-商品表与品牌表
表与表之间的关系:1:1 1:多 多:多 功能需求决定表关系 此处的表关系为:品牌表:商品表=1:多 1.首先在表结构上关联,在多的表(商品表)添加一个字段,关联一的表(品牌表)的ID(主键) 添加字 ...
- PHP.27-TP框架商城应用实例-后台4-使用Gii生成品牌表的代码
Gii安装[GII适用于商城项目] 将Gii文件夹复到application 是,访问http://xx.com/index.php/gii Gii规则[Gii使用规则与建表规则密切相关] 1.建表字 ...
- PHP.44-TP框架商城应用实例-后台19-权限管理-RBAC需求分析
RBAC:Role Based Access Control:基于角色的访问控制 需求分析:[类似效果如下图] 1.权限,角色,管理员 2.权限管理[无限级] 注意:权限会被分配给角色,而不是给管理员 ...
随机推荐
- (C#) Handling and Raising Events
Handling and Raising Events .NET Framework 4.5 Other Versions 6 out of 20 rated this helpful - ...
- ARouter使用随记
官方文档地址 其他配置 1.创建一个config.gradle ext{ isDebug = false //false:作为Lib集成存在, true:作为application组件存在 andro ...
- 监控系统-mod-gearman
doc http://labs.consol.de/nagios/mod-gearman/ 安装 yum -y install gearmand-server-0.33-2.rhel6.x86_64. ...
- javaWeb上移下移(SpringMVC+Mabits+MySql)
文章已移至:https://blog.csdn.net/baidu_35468322/article/details/79643356 移动之前: 移动之后: 1.控制层 /** * 修改排序 * * ...
- 开源框架 epics,开源画面编辑软件 edm
epics Experimental Physics and Industrial Control System 一套开源软件框架,实验物理和工业控制系统 http://www.aps.anl.gov ...
- org.apache.xmlbeans.XmlException: error: does not close tag
使用myeclipse的jax自动生成webservice , 或者serviceImpl通过@webservice来实现webservice时, 使用soap UI (我测试使用的版本 5.2.1) ...
- 找子串替换(kmp)poj1572
题目链接:http://poj.org/problem?id=1572 输入数据时要注意,这里是string型 用getline(cin,origin[i]); #include <string ...
- centos6 编译安装gcc4.8.2
12 wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.8.2/gcc-4.8.2.tar.gz 13 rm -r -f g ...
- Vuex基础-Mutation
借助官网的一张图,更改 Vuex 的 store 中的状态的唯一方法是提交 mutation.不可以直接对其进行赋值改变.需要注意的是,mutations只能做一些同步的操作. 代码结构: ...
- javaWeb CSS 图像签名
<html> <head> <meta charset="utf-8" /> <title>CSS布局之图像签名</title ...