地區/遞歸分類

地區分類

這裏寫圖片描述
功能實現:
1)ajax請求查詢數據頁面

<?php  
    $id=isset($_GET['id'])?$_GET['id']:0;
    header('content-type:text/html;charset=utf-8');
    $pdo=new PDO('mysql:host=localhost;dbname=laravelinfo;','root','root');
    $pdo->exec('set names utf8');
    $data=$pdo->query('select * from sort where pid='.$id)->fetchAll(PDO::FETCH_ASSOC);
    echo json_encode($data);
?>

2)web頁面顯示

<?php  
    $id=isset($_GET['id'])?$_GET['id']:0;
    header('content-type:text/html;charset=utf-8');
    $pdo=new PDO('mysql:host=localhost;dbname=laravelinfo;','root','root');
    $pdo->exec('set names utf8');
    $data=$pdo->query('select * from sort where pid='.$id)->fetchAll(PDO::FETCH_ASSOC);
    // print_r($data);die;
?>
<select name="" class="box">
    <option value="">請選擇</option>
    <?php foreach($data as $k => $v){ ?>
    <option value="<?= $v['id'] ?>"><?= $v['name'] ?></option>
    <?php } ?>
</select>
<script src="jquery.1.12.min.js"></script>
<script>
    $(function(){
        $(document).on('change','.box',function(){
            var obj=$(this);
            var id=obj.val();
            $.ajax({
                type:'get',
                url:'sorturl.php',
                data:{id:id},
                dataType:'json',
                success:function(res){
                    if(res==''){
                        obj.nextAll().remove();
                        return false;
                    }
                    var str='<select name="" class="box"><option value="">請選擇</option>';
                    $.each(res,function(k,v){
                        str+='<option value="'+v.id+'">'+v.name+'</option>';
                    });
                    str+='</select>';
                    obj.nextAll().remove();
                    // alert(str);
                    obj.after(str);
                }
            })
        });
    })
</script>

遞歸分類1

這裏寫圖片描述
功能實現:

<?php  
    header('content-type:text/html;charset=utf-8');
    $pdo=new PDO('mysql:host=localhost;dbname=laravelinfo;','root','root');
    $pdo->exec('set names utf8');
    $data=$pdo->query('select * from sort')->fetchAll(PDO::FETCH_ASSOC);
    function getSort($data,$pid=0,$level=''){
        static $arr=array();
        foreach($data as $k => $v){
            //如果該分類pid=0
            if($v['pid']==$pid){
                $v['level']=$level;
                $arr[]=$v;

                getSort($data,$v['id'],$level.'-------');
        // print_r($arr);die;
            }
        }
        return $arr;
    }
    $info=getSort($data);
    // print_r($info);die;
?>
<select name="" id="">
    <?php foreach($info as $k => $v){ ?>
        <option value=""><?= $v['level'] ?><?= $v['name'] ?></option>
    <?php } ?>
</select>

遞歸分類2

效果實現如:
這裏寫圖片描述
上代碼:

<?php
// 調用方法
$arr=infinite($data,0,0);//  無限極分類

/**
無限極分類  遞歸循環
 */
/**
 * @param $list 要進行分類的數據
 * @param int $parent_id 父級的ID
 * @param int $deep deep樹
 * @return array
 * 遞歸獲取欄目
 */
function infinite($list = [],$parent_id = 0,$deep = 0){
    static $arr = [];
    foreach ($list as $v){
        if($v['parent_id'] == $parent_id){
            $v['deep'] = $deep;
            $v['title']=str_repeat("&nbsp;&nbsp;&nbsp;&nbsp;",$v['deep']).$v['title'];
//            var_dump($v);
            $arr[] = $v;
            infinite($list,$v['subject_id'],$deep + 1);
        }
    }
    return $arr;
}
?>
//  html 代碼
 <select name="parent_id" class="select">
      <option value="0">頂級分類</option>
      {foreach from=$data item=list}
      <option value="{$list.subject_id}">
      <!--{str_repeat("&nbsp;",($list.deep']))}-->
      {$list.title}
      </option>
      {/foreach}
</select>

接口分類數據處理


/*$data    查詢的所有數據
 * $pId    父id 默認爲0
 * $level  子集層級
 */
public   function getChild($result,$parid=0,$lel=1){
    $data=array();
    foreach($result as $k => $v){
        if($v['superior']==$parid){
            $v['lel']=$lel;
            if($v['lel']<=2){
                $v['children']=$this->getChild($result,$v['id'],$v['lel']+1);
                $data[]=$v;
            }
        }
    }
    return $data;
}

/**
 *  tpshop
 * 獲取商品一二三級分類
 * @return type
 */
function get_goods_category_tree(){
    $tree = $arr = $result = array();
    $cat_list = M('category')->cache(true)->where("is_show = 1")->order('sort')->select();//所有分類
    if($cat_list){
        foreach ($cat_list as $val){
            if($val['level'] == 1){
                $tree[] = $val;
            }
            if($val['level'] == 2){
                $arr[$val['parent_id']][] = $val;
            }
            if($val['level'] == 3){
                $crr[$val['parent_id']][] = $val;
            }
        }
        foreach ($arr as $k=>$v){
            foreach ($v as $kk=>$vv){
                $arr[$k][$kk]['children'] = empty($crr[$vv['id']]) ? array() : $crr[$vv['id']];
            }
        }

        foreach ($tree as $val){
            $val['children'] = empty($arr[$val['id']]) ? array() : $arr[$val['id']];
            $result[$val['id']] = $val;
        }
    }
    return $result;
}
發佈了29 篇原創文章 · 獲贊 7 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章