TP电商项目:商品会员级别

需求分析:

1.会员级别管理[级别名称,积分下限,积分上限]比如注册会员

2.添加商品时,可以为每个级别单独指定一个级别价格

第一步 建表

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 '会员级别 ';

建会员价格表

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 '会员价格 ';

使用gii生成会员级别的代码

配置文件

http://localhost:8989/php/TpShop/index.php/Gii


输入 : p39_member_level

配置文件gii/tab_config:

<?php

return array(

'tableName' => 'p39_member_level',    // 表名

'tableCnName' => '会员级别',  // 表的中文名

'moduleName' => 'Admin',  // 代码生成到的模块

'withPrivilege' => FALSE,  // 是否生成相应权限的数据

'topPriName' => '',        // 顶级权限的名称

'digui' => 0,            // 是否无限级(递归)

'diguiName' => '',        // 递归时用来显示的字段的名字,如cat_name(分类名称)

'pk' => 'id',    // 表中主键字段名称

/********************* 要生成的模型文件中的代码 ******************************/

// 添加时允许接收的表单中的字段

'insertFields' => "array('level_name','jifen_bottom','jifen_top')",

// 修改时允许接收的表单中的字段

'updateFields' => "array('id','level_name','jifen_bottom','jifen_top')",

'validate' => "

array('level_name', 'require', '级别名称不能为空!', 1, 'regex', 3),

array('level_name', '1,30', '级别名称的值最长不能超过 30 个字符!', 1, 'length', 3),

array('jifen_bottom', 'require', '积分下限 不能为空!', 1, 'regex', 3),

array('jifen_bottom', 'number', '积分下限 必须是一个整数!', 1, 'regex', 3),

array('jifen_top', 'require', '积分上限 不能为空!', 1, 'regex', 3),

array('jifen_top', 'number', '积分上限 必须是一个整数!', 1, 'regex', 3),

",

/********************** 表中每个字段信息的配置 ****************************/

'fields' => array(

'level_name' => array(

'text' => '级别名称',

'type' => 'text',

'default' => '',

),

'jifen_bottom' => array(

'text' => '积分下限 ',

'type' => 'text',

'default' => '',

),

'jifen_top' => array(

'text' => '积分上限 ',

'type' => 'text',

'default' => '',

),

),

/**************** 搜索字段的配置 **********************/

'search' => array(

),

);

?>

选择生成代码,输入: p39_member_level.php

验证

http://localhost:8989/php/TpShop/admin/MemberLevel/lst


http://localhost:8989/php/TpShop/admin/MemberLevel/add


第三步 在添加商品时可以设置每个级别的价格

public function add(){

      if(IS_POST){

          $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();


      //取出所有的品牌

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

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

    //  print_r($brandData);

      //

      $this->assign(array(

        //  'brandData'=>$brandData,

          'mlData'=>$mlData,

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

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

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

      ));

      $this->display();

}

add.html


<td>

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

                      <?php echo $v['level_name'];?>:¥ <input type="text" name="shop_price" value="0"size="8"/>元<br/>

                      <?php endforeach;?>

                    </td>

                </tr>


测试代码:

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

          }


      } 

打印出来的结果:

array(7) { ["brand_id"]=> string(1) "1" ["goods_name"]=> string(12) "iphoneXS Max" ["market_price"]=> string(4) "8399" ["shop_price"]=> string(4) "8399" ["member_price"]=> string(5) "20000" ["is_on_sale"]=> string(3) "鏄�" ["goods_desc"]=> string(0) "" }

 ["member_price"]=> string(5) 不对

需要改一下会员名称:

<tr>

                    <td class="label">会员价格:</td>

                    <td>

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

                      <?php echo $v['level_name'];?>:¥ <input type="text" name="member_price[]" value="0" size="8"/>元<br/>

                      <?php endforeach;?>

                    </td>

                </tr>

输出结果:

array(7) { ["brand_id"]=> string(1) "1" ["goods_name"]=> string(15) "Apple iPhone XR" ["market_price"]=> string(4) "1340" ["shop_price"]=> string(4) "1340" ["member_price"]=> array(4) { [0]=> string(1) "0" [1]=> string(4) "1000" [2]=> string(5) "10000" [3]=> string(5) "20000" } ["is_on_sale"]=> string(3) "鏄�" ["goods_desc"]=> string(0) "" }

修改一下级别id


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

                      <?php echo $v['level_name'];?>:¥ <input type="text" name="member_price[<?php echo $v['id'];?>]" value="0" size="8"/>元<br/>

                      <?php endforeach;?>

                    </td>

思考问题方法:

在goodsModel模型类加入

protected function _after_insert($data,$option){

        $mp=I('post.member_price');

/*

获取<input type="text" name="member_price[<?php echo $v['id'];?>]" value="0" size="8"/>中的值



*/

        $mpModel=D('member_price');

        foreach ($mp as $k=>$v){



            $_v=(float)$v;

            if($_v>0){

            $mpModel->add(array(


                'price'=>$v,

                'level_id'=>$k,

                'goods_id'=>$data['id'],




            ));

            }

        }




    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念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

推荐阅读更多精彩内容