商品对比、排序(在Yii框架中的应用)

2.案例题目
实现商品列表的对比和排序功能。
3.案例完成思路要求
A,完成商品列表必须有分页 。
B,完成商品对比功能,要求每次对比商品为2个商品,不能多,不能少,并且如果不符合要求,要提示“必须是两个商品”。
点击“对比”按钮后跳转到对比页面展示两个商品的对比。
C,完成商品的排序功能,按照商品序号倒叙排列列表。

第二部分:PHP 代码实现
    /*
     * 商品对比
     */
    public function actionContrast(){
        $goods_id = \Yii::$app->request->get('goods_id');
        $goods_id = trim($goods_id,',');
        //根据ID查询商品的详细信息
        $query = new \yii\db\Query();
        $where = "goods_id in($goods_id)";
        $goodsInfo = $query->from(['g_goods'])->innerJoin('g_brand','g_goods.brand_id=g_brand.brand_id')->where($where)->all();
        return $this->renderPartial('list',['goods'=>$goodsInfo]);
    }

    /*
     * 商品排序
     */
    public function actionSort(){
        $sort = \Yii::$app->request->post('sort');
        $g_sort = trim($sort,',');
        //根据ID查询商品的详细信息
        $query = new \yii\db\Query();
        $where = "g_sort in($g_sort)";
        $goodsInfo = $query->from(['g_goods'])->innerJoin('g_brand','g_goods.brand_id=g_brand.brand_id')->where($where)->all();
        foreach($goodsInfo as $key => $value){
            $gsort[$key] = $value['g_sort'];
        }
        //二维数组 根据值来排序
        array_multisort($gsort,SORT_DESC,$goodsInfo);
        echo json_encode($goodsInfo);
    }
第三部分:html 页面
<script>
        //商品对比
        function contrast(){
            //判断是否被选中
            var status = $(".checkbox");
            //定义一个空的变量 来存储已被选中的选项
            var str = '';
            for(var i=0;i<status.length;i++){
                if(status[i].checked == true){
                    str +=','+ status[i].value;
                }
            }
            //判断是否选择两件啊商品
            if(str.length<3){
                alert('请选择两件商品');
                return false;
            }else{
                location.href='?r=goods/contrast&goods_id='+str;
            }
        }
        //排序
        function sort(){
            var g_sort = $('input[type="number"]');
            sort = '';
            for(var i=0;i< g_sort.length;i++){
                sort += ','+g_sort[i].value;
            }
            $.post('?r=goods/sort',{sort:sort},function(msg){
                //将JSON数据转为对象
                obj = eval("("+msg+")");
                var tr = '';
                for(i in obj){
                    tr += '<tr class="content">'
                        tr += "<td><input type='checkbox' value="+obj[i].goods_id+" class='checkbox'></td>";
                        tr += "<td><input type='number' value="+obj[i].g_sort+"></td>";
                        tr += "<td>"+obj[i].g_name+"</td>";
                    tr += '</tr>';
                }
                //移除原来的数据
                $(".content").remove();
                //将数据追加
                $("#tr").after(tr);
            });
        }
    </script>
第四部分:table 表格
<table align="center" border="1" width="800">
    <tr id="tr">
        <td>选项</td>
        <td>序号</td>
        <td>商品名称</td>
    </tr>
    <?php foreach($goods as $value){ ?> 
    <tr class="content">
        <td><input type="checkbox" value="<?=$value['goods_id'];?>" class="checkbox"></td>
        <td><input type="number" value="<?=$value['g_sort'];?>"></td>
        <td><?= $value['g_name'];?></td>
    </tr>
    <?php } ?>
    <tr>
        <td><button οnclick="contrast()" style="cursor: pointer;">对比</button></td>
        <td><button οnclick="sort()" style="cursor: pointer;">排序</button></td>
        <td>
            <a href="?r=goods/index&page=1">首页</a>
            <a href="?r=goods/index&page=<?=$last?>">上一页</a>
            <a href="?r=goods/index&page=<?=$next?>">下一页</a>
            <a href="?r=goods/index&page=<?=$pageSum?>">尾页</a>
        </td>
    </tr>
</table>



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值