您的位置:首页 > 编程语言 > PHP开发

TP-商品处理

2015-12-14 12:17 459 查看
新建BannerController

分析: banner表里面goods_id 应该把链接的商品名称显示出来 涉及到多表查询

在model里面 新建 BannerViewModel

namespace Admin\Model;

use Think\Model\ViewModel;

class BannerViewModel extends ViewModel{

public $viewFields = array(

'banner'=>array('img','id','sort'), 主表

'goods'=>array('name','_on'=>'banner.goods_id=goods.id'), 从表

);

}

在BannerController中

查询

public function index(){

//幻灯片的列表

$banner = D("BannerView");

$data = $banner->order("banner.sort desc")->select();

//$对象->order() 声明排序方式 banner.sort desc 一定加上表名

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

$this->display();

}

添加:

在添加banner的时候,要知道有哪些商品可以选择去链接

public function add(){ if(IS_POST){语句1}else{ 语句2}}

语句1:

//查询出商品

$goods = M("goods");

$data = $goods->field("id,name")->select();

//$goods->field("id,name") 规定查询的字段,如果不规定 默认是*查询全部

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

$this->display();

在add.html中

<tr>

<th width="120">链接商品 :</th>

<td>

<select class="J_cate_select mr10" name="goods_id">

<foreach name="data" item="v">

<option value="{$v.id}">{$v.name}</option>

</foreach>

</select>

</td>

</tr>

<tr>

<th>排序 :</th>

<td>

<input type="text" name="sort" placeholder="数值越大 越靠前" style="width: 60px;" class="input-text" size="60">

</td>

</tr>

语句2:

$banner = D("Banner"); 只是banner没有在model里面写验证规则,如果需要,也要写验证规则

if($banner->create()){

if($banner->add()){

$this->success("添加成功",U("Banner/index"));

}else{

$this->error("添加失败",U("Banner/index"));

}

}else{

$this->error($banner->getError());

}

修改:

<a href="{:U('Banner/edit',array('id'=>$vo['id']))}" class="J_showdialog">编辑</a>

public function edit(){

if(IS_POST){

$banner = D("Banner");

$id = I("post.id",0,"int");

if($banner->create()){

if($banner->where("id=".$id)->save()!==false){

$this->success("编辑成功",U("Banner/index"));

}else{

$this->error("编辑失败",U("Banner/index"));

}

}else{

$this->error($banner->getError());

}

}else{

//查询出商品

$goods = M("goods");

$data = $goods->field("id,name")->select();

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

$id = I("get.id",0,"int");

$banner_data = M("banner")->where("id=".$id)->find();

$this->assign("banner_data",$banner_data);

$this->display();

}

}

<select class="J_cate_select mr10" onchange="change_cate()" id="p_id">

<foreach name="cate_data" item="v">

<option value="{$v.id}"

<if condition="$data['p_id'] eq $v['id']"> selected</if>

>{$v.name}</option>

</foreach>

</select>

删除:

<a href="javascript:del({$vo.id})">删除</a>

function del(id){

if(confirm("确认删除这个幻灯片?")){

$.post("{:U('Banner/del')}",{id:id},function(data){

if(data == -2){

alert("非法请求");

}else if(data == 0){

alert("删除失败,请刷新后重试");

window.location.reload();//刷新

}else if(data == 1){

$("#tr"+id).remove();//直接把删除的移除掉

}

})

}

}

public function del(){

if(IS_AJAX){

$id = I("post.id",0,"int");

//先确认是否有商品在这个分类下面

$banner = M("banner");

if($banner->where("id=".$id)->delete()){

echo 1;

}else{

echo 0;

}

}else{

echo -2;//如果返回-2,表示请求方式错误

}

exit;

}

推荐商品管理rec.. 和banner一样的,复制过来,修改一下就可以了 控制器 模型 视图

记得将banner表和推荐商品表的外键改为类型改为cascade 删除商品表的时候 这个数据会自动删除
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: