以下代码如有错误,请在评论中指出,谢谢!
1.mySql数据库表设计
有3列 分别是ID (主键、自动增长) 、FID (int)、 NAME(分类名称),FID 是保存上一级分类的ID
ID
FID
NAME
1
0
一级分类
2
1
二级分类
3
2
三级分类
2.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 "";
/*foreach ($tree as $k=>$v){
$s='';
for ($i=1;$i<=$v['level'];$i++){
$s.=' ';
}
echo $s.$v['name']."
";
}*/
foreach ($tree as $arr=>$v) {
if($v['level']==4){
echo $v['name']."";
}
}
?>