PHP.40-TP框架商城应用实例-后台15-商品属性与库存量1-不同商品(唯一属性、可选属性),属性类型
思路:
1、不同商品属于不同的类型,如:手机、服装、电脑等类型
2、不同的类型有不同的属性,其中分为唯一属性和可选属性,如服装:可选属性{尺寸:S,M,L……;颜色:白色,黑色……}唯一属性:材质
首先把类型与属性关联起来
1、建表
类型表{p39_type}
drop table if exists p39_type;
create table p39_type
(
id mediumint unsigned not null auto_increment comment 'Id',
type_name varchar(30) not null comment '类型名称',
primary key (id)
)engine=InnoDB default charset=utf8 comment '类型';
属性表{p39_attribute}
drop table if exists p39_attribute;
create table p39_attribute
(
id mediumint unsigned not null auto_increment comment 'Id',
attr_name varchar(30) not null comment '属性名称',
attr_type enum('唯一', '可选') not null comment '属性类型',
attr_option_values varchar(300) not null default '' comment '属性可选值,用逗号隔开多个值',
type_id mediumint unsigned unsigned not null comment '所属类型',
primary key (id),
key type_id (type_id)
)engine=InnoDB default charset=utf8 comment '属性表';
2、GII自动生成两张表的操作代码
注意:
1、生成类型表代码前,在配置文件p39_type.php中,注意添加检查类型名称是否重复的验证;且不需要搜索功能【类型数据级不大】

2、在生成属性表代码之前,在配置文件p39_arrtribute中, 删除不必要的搜索字段

3、调整生成代码,使之更适用
1、类型改为下拉框,适用之前封装好的下拉框函数buildSelect('表名','下拉框名','下拉框的值[表字段]','表字段文本','可选值')
function buildSelect($tableName, $selectName, $valueFieldName, $textFieldName, $selectedValue = '')
{
$model = D($tableName);
$data = $model->field("$valueFieldName,$textFieldName")->select(); //取需要的两个字段值
$select = "<select name='$selectName'><option value=''>请选择</option>"; //下拉框name即存进表字段
foreach ($data as $k => $v)
{
$value = $v[$valueFieldName]; //值value <= 字段值【表id】
$text = $v[$textFieldName]; //显示内容 <= 字段值存放内容
if($selectedValue && $selectedValue==$value) //判断是否选中
$selected = 'selected="selected"';
else
$selected = '';
$select .= '<option '.$selected.' value="'.$value.'">'.$text.'</option>';
}
$select .= '</select>';
echo $select;
}
2、对属性可选值出现中文逗号情况的处理


删除类型
删除类型时,类型对应下的属性全部删除
思路:在删除类型代码TypeModel.class.php执行前,删除所有属性{_before_delete()}

PHP.40-TP框架商城应用实例-后台15-商品属性与库存量1-不同商品(唯一属性、可选属性),属性类型的更多相关文章
- PHP.43-TP框架商城应用实例-后台18-商品属性3-库存量管理
库存量管理 思想:为商品的每个多选属性设置库存量!!要把多选属性排列组合分别指定库存量!! 效果如下:[由商品已经添加的属性决定] 1.建表goods_number{goods_id,goods_nu ...
- PHP.41-TP框架商城应用实例-后台16-商品属性2-AJAX添加、删除
添加商品属性 思路:根据[后台15]类型表{id,type_name}与属性表{id,attr_name,attr_type,attr_option_values,type_id} 1.建表商品属性 ...
- PHP.38-TP框架商城应用实例-后台14-商品管理-商品扩展分类的删除、修改
商品分类删除 1.删除商品时,根据商品id删除扩展分类表数据 商品扩展分类修改 1.在控制器GoodsController.class.php/edit()中根据商品id取出对应的所有扩展分类 2.在 ...
- PHP.33-TP框架商城应用实例-后台9-商品相册-修改、删除(AJAX)
商品相册图片删除 当商品删除时,把相册中的图片一并从硬盘和数据库中删除,根据商品id[因为每一张商品相片都会生成三张缩略图,所以删除时要将其缩略图一并删除] //钩子方法_before_delete: ...
- PHP.31-TP框架商城应用实例-后台7-商品会员修改-页面优化,多表数据更新
商品表修改功能 1.页面优化,类似添加页面 <layout name="layout" /> <div class="tab-div"> ...
- 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.25-TP框架商城应用实例-后台2-商品列表页-搜索、翻页、排序
商品列表页 1.翻页 控制器GoodsController.class.php添加方法lst(),显示列表页 在商品模型GoodsModel.class.php类中添加search方法 /** *实现 ...
随机推荐
- One Order行项目里Item Category是怎么计算出来的
One Order的行项目里有个字段叫Item Category,我们在行项目里加入一个product后,就会自动带出Item Category来.这个值是怎么计算出来的? 检查CRMD_ORDERA ...
- Android(java)学习笔记20:UDP协议发送数据
1. UDP协议发送数据:我们总是先运行接收端,再运行发送端发送端: package cn.itcast_02; import java.io.IOException; import java.net ...
- Codeforces 7C 扩展欧几里得
扩展欧几里得是计算 ax + by = gcd(a,b) 的 x,y的整数解. 现在是ax + by + c = 0; 只要 -c 是 gcd(a,b) 的整数倍时有整数解,整数解是 x = x*(- ...
- java实现权重随机算法
权重随机算法在抽奖,资源调度等系统中应用还是比较广泛的,一个简单的按照权重来随机的实现,权重为几个随机对象(分类)的命中的比例,权重设置越高命中越容易,之和可以不等于100: 简单实现代码如下: im ...
- 关于ProjectServer定制化项目中心页面
ProjectServer界面很多客户接受不了,随便用户可以根据自己需要展示页面,但大多数国内用户喜欢确定的样式,我就是要这样的页面,不要个人定制. 那只有自己再做一个项目中心的webpart嵌入,对 ...
- Linux7静默安装Oracle11g教程,亲测实用有效!
1.查看swap大小,若小于150M,需添加增加虚拟空间 dd if=/dev/zero of=/swapadd bs=1024 count=2006424 mkswap /swapadd swapo ...
- tablib模块
####tablib基础知识#### tablib是什么我就不说了,网上一大推,我大概就知道能将数据转为某种格式 1.安装tablib模块 pip install tablib 2.安装完毕,就在你要 ...
- Reverse a String-freecodecamp算法题目
Reverse a String(翻转字符串) 题目要求: 把字符串转化成数组 借助数组的reverse方法翻转数组顺序 把数组转化成字符串 思路: 用.split('')将字符串转换成单个字母组成的 ...
- [tree]合并果子(哈夫曼树+优先队列)
现在有n堆果子,第i堆有ai个果子.现在要把这些果子合并成一堆,每次合并的代价是两堆果子的总果子数.求合并所有果子的最小代价. Input 第一行包含一个整数T(T<=50),表示数据组数. 每 ...
- es6几个新增语法的使用----数组
//数组的累加方法 let arr=[1,2,3]; let sum=arr.reduce((prev,cur)=>{ return prev+cur; }) console.log(sum)/ ...