以下代码如有错误,请在评论中指出,谢谢!
1.mySql数据库表设计
有3列 分别是ID (主键、自动增长) 、FID (int)、 NAME(分类名称),FID 是保存上一级分类的ID
ID | FID | NAME |
1 | 0 | 一级分类 |
2 | 1 | 二级分类 |
3 | 2 | 三级分类 |
2.PHP打印出代码
<?php
$conn=mysql_connect('127.0.0.1','root','123');
mysql_select_db('test');
mysql_query('set names utf8',$conn); //链接数据库
header("content-type:text/html;charset=utf-8"); //内容类型
function getName($fid,&$tree,$level=0){ //$fid FID号,& $tree可以改变外部数组,保存SQL数据,$level分类级别,默认为1级
$level++;
$query=mysql_query("select * from test where fid=".$fid);
while ($row=mysql_fetch_array($query)){
$tree[$row['id']]['id']=$row['id']; //把表保存到二维数组$tree
$tree[$row['id']]['name']=$row['name'];
$tree[$row['id']]['fid']=$row['fid'];
$tree[$row['id']]['level']=$level;
$num=mysql_query("select * from test where fid=".$row['id']); //读取下一级别是否存在
if(mysql_num_rows($num)>0){
getName($row['id'],$tree,$level);//递归调用自己
}
}
}
//返回二维数组
function tree($parent_id=0){
$tree=array();
getName($parent_id,$tree);
return $tree;
}
//打印数组
$tree=tree();
print_r($tree);
echo "</br>";
/*foreach ($tree as $k=>$v){
$s='';
for ($i=1;$i<=$v['level'];$i++){
$s.=' ';
}
echo $s.$v['name']."<br />";
}*/
foreach ($tree as $arr=>$v) {
if($v['level']==4){
echo $v['name']."</br>";
}
}
?>