Функция получения структурированного списка категорий из базы на PHP


Благодаря помощи профессионалов на stackoverflow я (почти сам) наконец-то написал функцию, которая выводит структуру категорий из базы данных лестничкой. Когда-то давно пытался сделать, но так и не смог. И вот наконец-то добился результата.
 
Есть много вариантов решения в интернете, но у одних больше одного запроса в базу, у других слишком сложный процесс выборки.
Моя же функция требует всего лишь один запрос в базу.
 
function ReintCategory($categories, $parent_id){

    $parent_isset = false;

    $result = '<ul class="sub_cat_menu">';
    foreach ($categories as $row) {

        // если id родительской категории = parent_id и у неё parent_id не 0
        if(($parent_id == $row["parent"]) && ($row["parent"] > 0)){
            $parent_isset = true;
            $result .= '<li>'.$row["id"].' '.$row["title"];

            $result .= ReintCategory($categories, $row["id"]);

            $result .= '</li>';
        }
    }
    $result .= '</ul>';

    if($parent_isset == true) {
        return $result;
    }
    return '';
}

echo '<ul class="editor_menu">';
foreach ($categories as $row) {

    if($row["parent"] == 0) {
        echo '<li>'.$row["id"].' '.$row["title"];
        echo ReintCategory($categories, $row["id"]);
        echo '</li>';
    }
}
echo "</ul>";
 
В $categories попадает ассоциативный массив из базы данных.

Автор: Kylaksizov
Поделиться:

    • bowtiesmilelaughingblushsmileyrelaxedsmirk
      heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
      winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
      worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
      expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
      disappointedconfoundedfearfulcold_sweatperseverecrysob
      joyastonishedscreamtired_faceangryragetriumph
      sleepyyummasksunglassesdizzy_faceimpsmiling_imp
      neutral_faceno_mouthinnocent

В корзине: 0 шт. 0 руб.
Отключите расширение AdBlock на нашем сайте!

Собеседники

Переписка

Нименование Количество Цена / 1 шт.
Всего: 0 руб.