Unlimited classification is mainly achieved by storing the id and classification path of the upper-level classification. Since the structure of the data is simple, I want to display the classification relationship in a tree shape. I can only think of using recursion to implement it. The following is the classification data table structure and a tree display function written by myself. What is wrong? I hope everyone can point it out.
Table structure: The id field is the category identifier, the name field is the category name, the father_id field is the id of the parent category to which it belongs, the path field is the category path (storing the collection of ancestors of the category), isdir determines whether it is a directory ( 1 means yes, 0 means no).
Display function:
//$count is the classification level
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;
}
where $ this->sql object is a sql operation class object. The re_datas() function returns the queried array, and the sql_numrows() function returns the queried number
Calling method: $sort_list = sort_list($sort_list,0, 1);