Добрый день всем! Подскажите пожалуйста новичку, пишу меню для админки, есть меню с многоуровневой вложенностью, сделал через рекурсию, в итоге, хотел чтоб на каждом уровне меню отображалась сумма конечных товаров в каждой подкатегории, а у меня отображаются только в конечном родителе
$res1 = mysqli_query(DB::db(), 'SELECT id,name,pid FROM ve_category WHERE toshow1 = 1 AND toshow = 1');
$num = mysqli_num_rows($res1);
if ($num > 0) {
$cats = [];
while ($cat = mysqli_fetch_assoc($res1)) {
$req1 = mysqli_fetch_assoc(mysqli_query(DB::db(), 'SELECT COUNT(a.good_id) as cnt FROM ve_goods_images as a join ve_goods as b on a.good_id = b.id WHERE b.category = ' . $row['id'] . ' AND b.inprod = 0 AND ( a.width < 500 or a.height < 500 or a.width / a.height < 3/4 or a.width / a.height > 4/3 )'));
$cats_ID[$cat['id']][] = $cat;
$cats[$cat['pid']][$cat['id']] = $cat;
}
}
function build_tree($cats, $pid, $only_parent)
{
if (is_array($cats) and isset($cats[$pid])) {
$tree = '<ul>';
if ($only_parent == false) {
foreach ($cats[$pid] as $cat) {
$req1 = mysqli_fetch_assoc(mysqli_query(DB::db(), 'SELECT COUNT(a.good_id) as cnt FROM ve_goods_images as a join ve_goods as b on a.good_id = b.id WHERE b.category = ' . $cat['id'] . ' AND b.inprod = 0 AND ( a.width < 500 or a.height < 500 or a.width / a.height < 3/4 or a.width / a.height > 4/3 )'));
$tree .= '<li>' . $cat['name'] . ' #' . $cat['id'] . ' (' . $req1['cnt'] . ' )';
$tree .= build_tree($cats, $cat['id'], false);
$tree .= '</li>';
}
} elseif (is_numeric($only_parent)) {
$cat = $cats[$pid][$only_parent];
$res2 = mysqli_query(DB::db(), 'SELECT DISTINCT producer FROM ve_goods WHERE category= ' . $cats[$pid][$only_parent] . '');
$tree = '<ul class="nested">11';
while ($row1 = mysqli_fetch_assoc($res2)) {
$goods_producer = $row1['producer'];
$tree .= '<li><span class="caret">' . $goods_producer . '</span>';
$tree .= '</li>';
}
$tree .= '</ul>';
}
$tree .= '</ul>';
}
return $tree;
}
function find_parent($tmp, $cur_id)
{
if ($tmp[$cur_id][0]['pid'] != 0) {
return find_parent($tmp, $tmp[$cur_id][0]['pid']);
}
return (int)$tmp[$cur_id][0]['id'];
}
echo build_tree($cats, 0, find_parent($cats_ID, [95, 113, 117, 118, 164, 352, 530, 815, 816, 817, 818, 916, 1249, 1419, 1460, 1588, 1614, 1624, 1644, 1789, 1918]));
вот что получается
у последнего родителя есть значения а выше по иерархии нули, помогите пожалуйста, вопрос жизни. я молодой специалист и только начал работать в этой сфере и мне нравиться все это , но с таким я не сталкивался, помогите пожалуйста