思路:

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-不同商品(唯一属性、可选属性),属性类型的更多相关文章

  1. PHP.43-TP框架商城应用实例-后台18-商品属性3-库存量管理

    库存量管理 思想:为商品的每个多选属性设置库存量!!要把多选属性排列组合分别指定库存量!! 效果如下:[由商品已经添加的属性决定] 1.建表goods_number{goods_id,goods_nu ...

  2. PHP.41-TP框架商城应用实例-后台16-商品属性2-AJAX添加、删除

     添加商品属性 思路:根据[后台15]类型表{id,type_name}与属性表{id,attr_name,attr_type,attr_option_values,type_id} 1.建表商品属性 ...

  3. PHP.38-TP框架商城应用实例-后台14-商品管理-商品扩展分类的删除、修改

    商品分类删除 1.删除商品时,根据商品id删除扩展分类表数据 商品扩展分类修改 1.在控制器GoodsController.class.php/edit()中根据商品id取出对应的所有扩展分类 2.在 ...

  4. PHP.33-TP框架商城应用实例-后台9-商品相册-修改、删除(AJAX)

    商品相册图片删除 当商品删除时,把相册中的图片一并从硬盘和数据库中删除,根据商品id[因为每一张商品相片都会生成三张缩略图,所以删除时要将其缩略图一并删除] //钩子方法_before_delete: ...

  5. PHP.31-TP框架商城应用实例-后台7-商品会员修改-页面优化,多表数据更新

    商品表修改功能 1.页面优化,类似添加页面 <layout name="layout" /> <div class="tab-div"> ...

  6. PHP.24-TP框架商城应用实例-后台1-添加商品功能、钩子函数、在线编辑器、过滤XSS、上传图片并生成缩略图

    添加商品功能 1.创建商品控制器[C] /www.test.com/shop/Admin/Controller/GoodsController.class.php <?php namespace ...

  7. PHP.48-TP框架商城应用实例-后台23-权限管理-权限验证

    权限验证 1.登录控制器 2.通过tp验证码类生成验证码图片 3.在管理员模型增加登录验证规则 4.后台中所有的控制器必须先登录才能访问 思路:在访问任何一个控制器之前都判断一个session即可,= ...

  8. PHP.28-TP框架商城应用实例-后台5-多表操作-商品表与品牌表

    表与表之间的关系:1:1 1:多 多:多 功能需求决定表关系 此处的表关系为:品牌表:商品表=1:多 1.首先在表结构上关联,在多的表(商品表)添加一个字段,关联一的表(品牌表)的ID(主键) 添加字 ...

  9. PHP.27-TP框架商城应用实例-后台4-使用Gii生成品牌表的代码

    Gii安装[GII适用于商城项目] 将Gii文件夹复到application 是,访问http://xx.com/index.php/gii Gii规则[Gii使用规则与建表规则密切相关] 1.建表字 ...

  10. PHP.25-TP框架商城应用实例-后台2-商品列表页-搜索、翻页、排序

    商品列表页 1.翻页 控制器GoodsController.class.php添加方法lst(),显示列表页 在商品模型GoodsModel.class.php类中添加search方法 /** *实现 ...

随机推荐

  1. libxml

    /** * section: Tree * synopsis: Navigates a tree to print element names * purpose: Parse a file to a ...

  2. 谣言粉碎机 - 极短时间内发送两个Odata request,前一个会自动被cancel掉?

    背景 有时我们能在Chrome开发者工具的Network tab里观察到SAP UI5应用会发出某些状态为"取消"的OData请求.如下图第五个请求. 之前有一种似是而非的说法:极 ...

  3. 20165322 实验四 《Android程序设计》

    实验四 <Android程序设计> 任务一 实验内容 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECANDROID,安装 Androi ...

  4. GroundPlaneEstimator.cpp解读

    GroundPlaneEstimator域下的compute函数,就相当于整个cpp的主函数,也体现了整个调用过程,先执行compute_v_disparity_data,再compute_v_dis ...

  5. 学校管理系统C#(数据库、源码、演讲内容、ppt等)

    该系统使用C#语言编程 在学院项目展获取第一名 git地址:https://github.com/weibanggang/schoolsystem

  6. P1666 前缀单词

    P1666 前缀单词 tire树上跑dp 首先将trie树建出来,然后对于每个节点.考虑他的子节点. 子节点的方案数都互不干扰,所以子节点与其他子节点的的方案数可以利用乘法原理算出来. 然后如果这个节 ...

  7. unity3D引擎:2D游戏自动瞄准算法实现

    转:http://blog.csdn.net/naitu/article/details/39555373 在很多飞行射击类游戏里,都有敌人向玩家自动瞄准并开火的功能.在这里本人用unity3D引擎新 ...

  8. AngularJS 使用序号的表格

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  9. 表达式过滤器 uppercase

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  10. 分享一个关于pthread线程栈在mm_struct里面的分布问题

    大家好,本人被下面这个问题困扰了一段时间,最近似乎找到了答案. 这里和大家分享一下,可能对有相同困惑的同学有点帮助,同时也请各位帮忙看看错漏的地方. 1================问题: 在使用p ...