<?php
global $mysqli;
global $count;
$count=0;
$mysqli = new MySQLi("localhost","root","","bbs");
$mysqli->set_charset("utf8");
/*
数据库信息 表名: category
+-----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+----------------+
| cat_id | int(10) | NO | PRI | NULL | auto_increment |
| name | varchar(50) | NO | | NULL | |
| parent_id | int(10) | NO | | NULL | |
+-----------+-------------+------+-----+---------+----------------+
SQL 语句查询出来所以 parent_id=0 的信息, parent_id =0 表明这个一个最高分类,下面还可能有
好多个 子分类
*/
$sql ="select * from category where parent_id=0";
$result =$mysqli->query($sql);
$cat_arr =array();
while($row =$result->fetch_assoc())
{
$cat_arr[$row['cat_id']]['id']=$row['cat_id'];
$cat_arr[$row['cat_id']]['name']=$row['name'];
$cat_arr[$row['cat_id']]['parent_id']=$row['parent_id'];
/*
将查询出来的一个信息都存储在 $cat_arr 中,如果这个信息的存在,就去寻找
以这个信息的 cat_id 为 parent_id 的所有的信息,而这个任务则去交给了
getChild() 方法去完成,将得到的所有的子分类都以 $cat_arr['cat_id']['child']为索引添加到
数组里面去.
在得到的数组中,每一行包含了 cat_id , name parent_id 三个字段,这是所有行都包含的
而如果这一行 中的 child 字段不为空的话,那么就说明以这个 cat_id ,其还有子分类 ,那么
就要递规调用里面所有的子分类
*/
if(isset($row['cat_id'])!=NULL)
{
$cat_arr[$row['cat_id']]['child']=getChild($row['cat_id']);
}
}
foreach($cat_arr as $value)
{
//var_dump ($value['name']);
echo $value['name']."</br>";
//var_dump($value['cat_id']);
listcat($value['child'],2);
/*foreach($value['cat_id'] as $v)
{
var_dump($v['name']);
}*/
}
function listcat($array,$level)
{
if(!empty($array))
{
foreach($array as $value)
{
//var_dump($value['cat_id']);
echo getLevel($level);
echo $value['name']."</br>";
listcat($value['child'],$level+2);
}
}
}
/*
使各类别显示出来各级关系,所以在每个子级分类显示前加入空格
*/
function getlevel($level)
{
$str=NULL;
for($i=0;$i<$level;$i++)
{
$str.=" ";
}
$str.="|--";
return $str;
}
function getChild($id)
{
global $mysqli;
$sql ="select * from category where parent_id=".$id;
$result =$mysqli->query($sql);
$cat_arr=array();
while($row = $result->fetch_assoc())
{
$cat_arr[$row['cat_id']]['id']=$row['cat_id'];
$cat_arr[$row['cat_id']]['name']=$row['name'];
$cat_arr[$row['cat_id']]['parent_id']=$row['parent_id'];
if(isset($row['cat_id'])!=NULL)
{
$cat_arr[$row['cat_id']]['child']=getChild($row['cat_id']);
}
}
return $cat_arr;
}
/*
运行效果
教育
|--大学
|--南阳理工
|--计算机系
|--中学
|--小学
衣服
|--帽子
|--衬衫
|--鞋子
|--耐克
*/
?>
PHP 类别分类级子分类的列出
最新推荐文章于 2023-10-13 17:27:46 发布