PHP开发分类技术之使用递归实现无限级分类(一)
首先,我们需要创建一个简单的数据库test
<?php
$link = mysqli_connect('localhost','username','password','test');
mysqli_set_charset($link, "utf8");
if (!$link) {
die("连接失败:".mysqli_connect_error());
}
?>创建新的表class,设置3个字段
排序id int型。
分类名称title varchar型。
分类pid int型。
类似如下的表:

思路:
定义一个自定义函数get_str ,设置父类pid = 0, 使用SQL语句查询出它的子类,把查询出来的子类放置到$result中
使用while循环出子类,通过构建字符串做成输出的样式,调用自定义函数get_str,将子类的id传入自定义函数中,
然后继续查询下一级。
<?php
function get_str($id = 0) {
global $str;
global $link; //global 关键词用于访问函数内的全局变量。
$sql = "select id,title from class where pid= $id";
$result = mysqli_query($link,$sql);//查询pid的子类的分类
if($result){//如果有子类
$str .= '<ul>';
while ($row = mysqli_fetch_array($result)) { //循环记录集
$str .= "<li>" . $row['id'] . "--" . $row['title'] . "</li>"; //构建字符串
get_str($row['id']); //调用get_str(),将记录集中的id参数传入函数中,继续查询下级
}
$str .= '</ul>';
}
return $str;
}
echo get_str(0);
?>输出类似:

