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 删除商品表的时候 这个数据会自动删除
分析: 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 删除商品表的时候 这个数据会自动删除
相关文章推荐
- TP--商品管理-删除、修改
- PHP7新增 功能
- PHP工具插件大全
- TP--商品管理--添加,查询
- php 实现支付宝接口
- PHP-连接MySql常用命令及步骤总结
- [转载]ROS下的PPTP配置
- iis7+php5.6配置404错误页面的问题
- Laravel 5.1 事件、事件监听的简单应用
- phpwind 帖子内图片缩放
- php foreach 意外情况简述
- 很全的php数组操作方法
- FTP的主动和被动模式详解
- FTP的主动和被动模式详解
- PHP Multipart/form-data remote dos Vulnerability
- PHP:var_dump展示不全
- PHP5.2至5.6的新增功能详解
- php类中的$this,static,final,const,self这几个关键字使用方法
- PHP中PDO的基础使用实例
- tp导出excel