地區分類
功能實現:
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(" ",$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(" ",($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;
}