我在使用PHP的递归函数时遇到了一些麻烦。我正在创建一个函数,该函数创建基于数据库类别的链接。该表将使用“ parent_id”作为无限级别创建,以检查该类别的父ID。
我还包括了创建链接的“ category_link”字段。 我的问题在于使用递归函数创建链接系统。
例如,我具有以下类别: 汽车(ID 1)(链接/汽车) -沃尔沃(ID 2)(链接/ volvo) -奥迪(ID 3)(链接/ audi)
因此,如果我构建一个函数来创建ID2的链接,则最终的链接应该是/ cars / volvo。我的功能只是检索最后一个,/ volvo代替/ cars / volvo
function GetSlug($mysqli)
{
if (isset($_POST)) {
$cat = validar($mysqli, $_POST['card_category']);
if ($stmt = $mysqli->prepare("SELECT * FROM categories WHERE id = ? LIMIT 1")) {
$stmt->bind_param("i", $cat);
$stmt->execute() or trigger_error($stmt->error, E_USER_ERROR);
($stmt_result = $stmt->get_result()) or trigger_error($stmt->error, E_USER_ERROR);
if ($stmt_result->num_rows > 0) {
$category = array(
'categories' => array(),
'parent_cats' => array()
);
while ($row_data = $stmt_result->fetch_assoc()) {
$parent = $row_data['parent_id'];
//creates entry into categories array with current category id ie. $categories['categories'][1]
$category['categories'][$row_data['id']] = $row_data;
//creates entry into parent_cats array. parent_cats array contains a list of all categories with children
$category['parent_cats'][$row_data['parent_id']][] = $row_data['id'];
}
echo buildcat($parent, $category);
} else {
return false;
}
}
}
}
第二个功能:
function buildcat($parent, $category)
{
$html = "";
if (isset($category['parent_cats'][$parent])) {
foreach ($category['parent_cats'][$parent] as $cat_id) {
if (!isset($category['parent_cats'][$cat_id])) {
$html .= $category['categories'][$cat_id]['category_link'] . "<br/>";
}
if (isset($category['parent_cats'][$cat_id])) {
$html .= $category['categories'][$cat_id]['category_link'];
$html .= buildcat($cat_id, $category);
}
}
}
return $html;
}
我想我的问题是因为我只从数据库中获取选定类别ID的信息,而不是获得所有具有该类别的parent_id的类别。 我为此感到头痛。你能帮我么?谢谢!