Infinite level classification, mainly by storing the ID of the superior category and the classification path to achieve. Because of the simple structure of the data, I can only think of a recursive way to make the relationship of the classification a tree-like display.
Infinite level classification, mainly by storing the ID of the superior category and the classification path to achieve. Because the structure of the data is simple, so the relationship between the classification by the tree, I can only think of a recursive way to achieve, the following is a classification of data table structure and write a tree-like display function, there is nothing wrong where I hope you can point out.
Table structure: The ID field is the category identifier, the Name field is the category name, the father_id field is the Id,path field for the parent category (the collection that stores the ancestor of the taxonomy), and Isdir determines whether it is a directory (1 is, 0 is no).
Display function:
Copy Code code as follows:
$count for 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. = "<span style= ' color: #CCCCCC ' >". $name. " </span> ";
}
Else
{
$str. = $name ";
}
$temp = $count +1;
$str = $this->sort_list ($str, $rs [$i][id], $temp);
$i + +;
}
return $str;
}
Where the $this->sql object is the SQL Action class object, the Re_datas () function returns the array found, and the Sql_numrows () function returns the number of queries
Call method: $sort _list = sort_list ($sort _list,0,1);
The above is a personal thought, but also hope that everyone a lot of guidance