日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql查询无限下级_示例php+mysql查询实现无限下级分类树输出

發布時間:2025/3/21 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql查询无限下级_示例php+mysql查询实现无限下级分类树输出 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文實例講述了php+mysql查詢實現無限下級分類樹輸出。分享給大家供大家參考,具體如下:

這里介紹的php結合mysql查詢無限下級樹輸出,其實就是無限分類。給各位整理了幾個php無限分類的例子.

【相關學習推薦:php編程(視頻),mysql視頻教程】

樹輸出:function get_array($user_id,$top=0){

global $mysql,$_G;

$sql = "select user_id as name from `{spreads_users}` where p1.spreads_userid='{$user_id}'";

$rows= $mysql->db_fetch_arrays($sql);

if($top==1){

$arr[0]['name']=$user_id;

$arr[0]['children']=array();

}

$top=$top+1;

foreach ($rows as $key=>$value)

{

$r = get_array($value['name']); //調用函數,傳入參數,繼續查詢下級

$arr[0]['children'][$key]['name']= $value['username']; //組合數組

if(is_array($r)){

$arr[0]['children'][$key]['children']= $r[0]['children'];

}

$i++;

}

return $arr;

}

$list = get_array("1000",1); //調用函數1000是頂級ID

echo 'var data='.json_encode($list);

這個是輸出 Array 然后轉讓為 json

例子:

表結構:id字段為分類標識,name字段為分類名,father_id字段為所屬父分類的id,path字段為分類路徑,儲存該分類祖先的集合,isdir判斷是否是目錄,1為是,0為否.

顯示函數://$count為分類等級

sort_list($str,$fatherid,$count)

{

$rs = $this->sql->re_datas("select * from sort where father_id = fatherid");

$num = $this->sql->sql_numrows();

$i=0;

$n = 1;

while(isset($rs[$i]))

{

$name = "";

for($n = 1 ; $n < $count ; $n )

{

$name.="│ ";

}

if($i 1==$num)

{

$name.="└─".$rs[$i][name];

}

else

{

$name.="├─".$rs[$i][name];

}

if($rs[$i][isdir])

{

$str.="".$name."";

}

else

{

$str.=$name";

}

$temp = $count 1;

$str = $this->sort_list($str,$rs[$i][id],$temp);

$i ;

}

return $str;

}

其中$this->sql對象為sql操作類對象,re_datas()函數返回查到的數組,sql_numrows()函數返回查詢到的數目.

調用方法:$sort_list = sort_list($sort_list,0,1);

例子:

表:category

id int 主鍵,自增

name varchar 分類名稱

pid int 父類id,默認0

頂級分類的 pid 默認就是0了,當我們想取出某個分類的子分類樹的時候,基本思路就是遞歸,當然,出于效率問題不建議每次遞歸都查詢數據庫,通常的做法是先講所有分類取出來,保存到PHP數組里,再進行處理,最后還可以將結果緩存起來以提高下次請求的效率.

先來構建一個原始數組,這個直接從數據庫中拉出來就行:$categories = array(

array('id'=>1,'name'=>'電腦','pid'=>0),

array('id'=>2,'name'=>'手機','pid'=>0),

array('id'=>3,'name'=>'筆記本','pid'=>1),

array('id'=>4,'name'=>'臺式機','pid'=>1),

array('id'=>5,'name'=>'智能機','pid'=>2),

array('id'=>6,'name'=>'功能機','pid'=>2),

array('id'=>7,'name'=>'超級本','pid'=>3),

array('id'=>8,'name'=>'游戲本','pid'=>3),

);

目標是將它轉化為下面這種結構:電腦

—筆記本

——-超級本

——-游戲本

—臺式機

手機

—智能機

—功能機

用數組來表示的話,可以增加一個 children 鍵來存儲它的子分類:array(

//1對應id,方便直接讀取

1 => array(

'id'=>1,

'name'=>'電腦',

'pid'=>0,

children=>array(

&array(

'id'=>3,

'name'=>'筆記本',

'pid'=>1,

'children'=>array(

//此處省略

)

),

&array(

'id'=>4,

'name'=>'臺式機',

'pid'=>1,

'children'=>array(

//此處省略

)

),

)

),

//其他分類省略

)

處理過程:$tree = array();

//第一步,將分類id作為數組key,并創建children單元

foreach($categories as $category){

$tree[$category['id']] = $category;

$tree[$category['id']]['children'] = array();

}

//第二部,利用引用,將每個分類添加到父類children數組中,這樣一次遍歷即可形成樹形結構。

foreach ($tree as $k=>$item) {

if ($item['pid'] != 0) {

$tree[$item['pid']]['children'][] = &$tree[$k];

}

}

print_r($tree);打印結果如下:Array

(

[1] => Array

(

[id] => 1

[name] => 電腦

[pid] => 0

[children] => Array

(

[0] => Array

(

[id] => 3

[name] => 筆記本

[pid] => 1

[children] => Array

(

[0] => Array

(

[id] => 7

[name] => 超級本

[pid] => 3

[children] => Array

(

)

)

[1] => Array

(

[id] => 8

[name] => 游戲本

[pid] => 3

[children] => Array

(

)

)

)

)

[1] => Array

(

[id] => 4

[name] => 臺式機

[pid] => 1

[children] => Array

(

)

)

)

)

[2] => Array

(

[id] => 2

[name] => 手機

[pid] => 0

[children] => Array

(

[0] => Array

(

[id] => 5

[name] => 智能機

[pid] => 2

[children] => Array

(

)

)

[1] => Array

(

[id] => 6

[name] => 功能機

[pid] => 2

[children] => Array

(

)

)

)

)

[3] => Array

(

[id] => 3

[name] => 筆記本

[pid] => 1

[children] => Array

(

[0] => Array

(

[id] => 7

[name] => 超級本

[pid] => 3

[children] => Array

(

)

)

[1] => Array

(

[id] => 8

[name] => 游戲本

[pid] => 3

[children] => Array

(

)

)

)

)

[4] => Array

(

[id] => 4

[name] => 臺式機

[pid] => 1

[children] => Array

(

)

)

[5] => Array

(

[id] => 5

[name] => 智能機

[pid] => 2

[children] => Array

(

)

)

[6] => Array

(

[id] => 6

[name] => 功能機

[pid] => 2

[children] => Array

(

)

)

[7] => Array

(

[id] => 7

[name] => 超級本

[pid] => 3

[children] => Array

(

)

)

[8] => Array

(

[id] => 8

[name] => 游戲本

[pid] => 3

[children] => Array

(

)

)

)

優點:關系清楚,修改上下級關系簡單.

缺點:使用PHP處理,如果分類數量龐大,效率也會降低.相關推薦:編程視頻課程

總結

以上是生活随笔為你收集整理的mysql查询无限下级_示例php+mysql查询实现无限下级分类树输出的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。