TP电商项目:商品与分类的关系

需求分析:

1.一件商品必须属于一个主分类

荣耀 畅玩7X 4GB+32GB 全网通4G全面屏手机 标配版 极光蓝属于手机这个类

2.一件商品可以同时属于多个扩展分类

荣耀 畅玩7X 4GB+32GB 全网通4G全面屏手机 标配版 极光蓝 属于智能手机类,也属于拍照手机类

你是否知道一个更容易着手问题?

create table p39_goods

(

id mediumint unsigned not null auto_increment comment 'Id',

goods_name varchar(150) not null comment '商品名称',

market_price decimal(10,2) not null comment '市场价格',

shop_price decimal(10,2) not null comment '本店价格',

goods_desc longtext comment '商品描述',

is_on_sale enum('是','否') not null default '是' comment '是否上架',

is_delete enum('是','否') not null default '否' comment '是否放到回收站',

addtime datetime not null comment '添加时间',

logo varchar(150) not null default '' comment '原图',

sm_logo varchar(150) not null default '' comment '小图',

mid_logo varchar(150) not null default '' comment '中图',

big_logo varchar(150) not null default '' comment '大图',

mbig_logo varchar(150) not null default '' comment '更大图',

brand_id mediumint unsigned not null default '0' comment '品牌id',

cat_id mediumint unsigned not null default '0' comment '主分类Id',

primary key (id),

key shop_price(shop_price),

key addtime(addtime),

key brand_id(brand_id),

key cat_id(cat_id),

key is_on_sale(is_on_sale)

)engine=InnoDB default charset=utf8 comment '商品';

联想产品与品牌关系的做法,模仿其做法:

ALTER TABLE p39_goods ADD cat_id mediumint unsigned not null default '0' comment '主分类Id';

修改商品的表单添加一个主分类下拉框

商品控制器中取出分类数据:

从CategoryController中:

$model = D('category');

$catData=$model->getTree();

'catData'=>$catData

粘贴到Goods添加方法中

public function add(){

      if(IS_POST){

      // var_dump($_POST);

        //  die;

          $model =D('goods');

      if( $model->create(I('post.'),1)) {

          if($model->add()){

              //插入到数据库

              $this->success('操作成功',U('lst'));

              exit;

              //http://localhost:8989/php/TpShop/Admin/goods/add

          }


      } 

        $error=$model->getError();

        $this->error($error);




      }

      //显示表单


      //取出所有会员级别

      $mlModel=D('member_level');

      $mlData=$mlModel->select();

      $model = D('category');

      $catData=$model->getTree();

      //取出所有的品牌

      // $brandModel=D('brand');

      //$brandData=$brandModel->select();

    //  print_r($brandData);

      //

      $this->assign(array(

        //  'brandData'=>$brandData,

          'catData'=>$catData,

          'mlData'=>$mlData,

          '_page_title'=>'添加商品',

          '_page_btn_name'=>'商品列表',

          '_page_btn_link'=>U('lst'),

      ));

      $this->display();

}

从视图层复制代码至add.html

<tr>

                <td class="label">上级分类:</td>

                <td>

                    <select name="parent_id">

                    <option value="0">顶级分类</option>

                    <?php foreach ($catData as $k => $v): ?>

                    <option value="<?php echo $v['id']; ?>"><?php echo str_repeat('-', 8*$v['level']) . $v['cat_name']; ?></option>

                    <?php endforeach; ?>

                    </select>

                </td>

            </tr>

修改商品模型:类比以上做法

protected $insertFields='goods_name,market_price,shop_price,is_on_sale,goods_desc,brand_id,cat_id';

  //修改时调用create方法允许接收的字段

    protected  $updateFields='id,goods_name,market_price,shop_price,is_on_sale,goods_desc,brand_id,cat_id';

    //定义验证规则


    protected  $_validate=array(

        array('cat_id', 'require', '必须选择主分类!', 1),

      array('goods_name', 'require', '商品名称不能为空',1),

      array('market_price','currency','市场价格必须为货币类型',1),

      array('shop_price','currency','本店价格必须为货币类型',1),

    );

同理类比:

public function edit(){

      $id=I('get.id');

      $model =D('goods');


      if(IS_POST){


      if( $model->create(I('post.'),2)) {

          if(FALSE!==$model->save()){

              //插入到数据库

              $this->success('操作成功',U('lst'));

              exit;


          }


      } 

        $error=$model->getError();

        $this->error($error);




      }

      //显示表单


      $data=$model->find($id);

      $this->assign('data',$data);

          //取出所有的品牌

      // $brandModel=D('brand');

      // $brandData=$brandModel->select();

    //  print_r($brandData);

      // 取出所有的分类做下拉框

      $catModel = D('category');

    $catData = $catModel->getTree();

// 设置页面信息

$this->assign(array(

                      'catData' => $catData,

                      //  'brandData'=>$brandData,

'_page_title' => '修改商品',

'_page_btn_name' => '商品列表',

'_page_btn_link' => U('lst'),

));


      $this->display();

}

修改edit.html

<tr>

                <td class="label">上级分类:</td>

                <td>

                    <select name="cat_id">

                    <option value="0">顶级分类</option>

                    <?php foreach ($catData as $k => $v):

                    // 跳过当前分类和子分类

                    //if($v['id'] == $data['id'] || in_array($v['id'], $children))

                    //continue ;

                    if($v['id'] == $data['cat_id'])

                    $select = 'selected="selected"';

                    else

                    $select = '';

                    ?>

                    <option  <?php echo $select; ?> value="<?php echo $v['id']; ?>"><?php echo str_repeat('-', 8*$v['level']) . $v['cat_name']; ?></option>

                    <?php endforeach; ?>

                    </select>

                </td>

            </tr>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容