многолевелно дървовидно меню

ghostbg

Registered
може да се посмеете но просто съм забил и след като го направих с 6 foreach-a не мога да го измисля да е по просто... та кажете как да стане имам база
Код:
table -> categories
field  -> id
field  -> parent_id
field  -> name

и категории

field  ->1
field  -> 0
field  -> Кагетория1

field  ->2
field  -> 0
field  -> Кагетория2

field  ->3
field  -> 2
field  -> Кагетория2.1

field  ->4
field  -> 2
field  -> Кагетория2.2

field  ->5
field  -> 4
field  -> Кагетория2.2.1

field  ->6
field  -> 5
field  -> Кагетория2.2.1.1

field  ->7
field  -> 0
field  -> Кагетория3

как да го направя в

Код:
                   <ul>
                        <li>категория1</li>
                        <li>категория2
                            <ul>
                                <li>категория2.1</li>
                                <li>категория2.2
                                    <ul>
                                        <li>категория2.2.1
                                            <ul>
                                                <li>категория2.2.1.1</li>
                                            </ul>
                                        </li>
                                    </ul>
                                </li>
                            </ul>
                        </li>
                        <li>категория3</li>
                    </ul>

това точно го постигам с 4 foreach и 4 if-a ... и разбирате че става тежко
 
Дали няма да ти трябва още едно поле parent_parent_id :idea:
Аз не мога да разбера логиката, по която си тръгнал. Някак си не може да се разбере.
 
това е масива който изкарвам от база
ако сложа parent_parent_id ще мога да направя менюто до 2 нива но при мен менюто ще е до 8-9 нива и да правя 8-9 полета в базата който да са parent_id1, parent_id2, parent_id3 ли ? Нещо май не е така :)

Код:
$categories = array(
    0 => array(
            Cat_title => Категория1,
            Cat_id => 2,
            Cat_parent_id => 0,
        ),

    1 => array
        (
            Cat_title => Категория2,
            Cat_id => 3,
            Cat_parent_id => 0,
        ),

    2 => Array
        (
            Cat_title => Категория3,
            Cat_id => 4,
            Cat_parent_id => 0,
        ),

    3 => Array
        (
            Cat_title => Категория4,
            Cat_id => 5,
            Cat_parent_id => 0,
        ),

    4 => Array
        (
            Cat_title => Категория5,
            Cat_id => 6,
            Cat_parent_id => 0,
        ),

    5 => Array
        (
            Cat_title => Категория6,
            Cat_id => 7,
            Cat_parent_id => 0,
        ),

    6 => Array
        (
            Cat_title => Категория7,
            Cat_id => 8,
            Cat_parent_id => 0,
        ),

    7 => Array
        (
            Cat_title => Категория8,
            Cat_id => 9,
            Cat_parent_id => 0,
        ),

    8 => Array
        (
            Cat_title => Категория8,
            Cat_id => 10,
            Cat_parent_id => 0,
        ),
		
9 => Array
        (
            Cat_title => '1231312',
            Cat_id => 11,
            Cat_parent_id => 2,
        ),
		
    10 => Array
        (
            Cat_title => '33636',
            Cat_id => 12,
            Cat_parent_id => 2,
        ),
	11 => Array
        (
            Cat_title => 'dddd',
            Cat_id => 13,
            Cat_parent_id => 4,
        ),
		
    12 => Array
        (
            Cat_title => 'ffff',
            Cat_id => 14,
            Cat_parent_id => 4,
        ),
	13 => Array
        (
            Cat_title => 'rrrrrr',
            Cat_id => 15,
            Cat_parent_id => 14,
        ),
		
    14 => Array
        (
            Cat_title => 'ttttttt',
            Cat_id => 16,
            Cat_parent_id => 14,
        ),
);
 
Ами не знам, в смисъл от примера който даде
Един запис, съдържа (примерно)
1 (което е ИД-то на категорията)
1 (0 ако не е дъщерна, и число ако е)
Име (и естествено името).
Но от примера, който даде , как ще разбереш дали parent_id е дъщерна на самата категория, или е дъщерна на дъщерната категория? (Това не знам дали може да се разбере, че малко объркано го написах май)
 
еми да и аз не знам но съм виждал много бази който имат така многолевелни менюта че категориите им се записват по същия начин Обаче не съм видял как става с php
 
По принцип, може да структурираш записите в няколко таблици

Categories
Id , Name
Sub_Categories
Id, Cat_id, Name
Sub_Sub_Categories
Id,Sub_Cat_id, Name

Според мен ще е по-добре, на този етап (надявам се), но изобщо не съм сигурен. Това е само идея, нека някой който повече разбира да се изкаже.
 
така го мислех и аз но като имам 8-9 нива значи трябва да направя 8-9 таблици и това само на едната част, защото аз ще има още един вид категории който ще се отнасят за друго съдържание и те ще са с8-9 нива и така аз ще имам 16-18 таблици само категории ? :) нещо не се връзва
 

Back
Горе