Най-добра практика за извеждане на навигационни пътеки в PHP

Като част от решение за електронна търговия, върху което работим, CMS има опция продуктовите категории да имат неограничен брой подкатегории, а всяка подкатегория може да има неограничен брой подкатегории. По принцип има неограничено ниво на влагане за продуктови категории.

Схемата на таблицата на базата данни за категориите изглежда по следния начин:

+-------------+-----------------+----------------+
| category_id |      name       |   parent_id    |
+-------------+-----------------+----------------+
|     1       |    Parent 1     |      null      |
|     2       | Child of Parent |        1       |
+-------------+-----------------+----------------+

Искаме да добавим навигация с навигация за всяко ниво на навигацията на категориите, така че въпросът ми е каква е най-добрата практика за циклично преминаване през категориите, докато има назначен родител, докато достигне най-високото ниво?

Очевидно можем да го кодираме във фиксиран цикъл (например if($child->hasParent()) { echo '1'; if($child->children->hasParent() { } } и т.н.

Как преминавате през неизвестен брой категории, докато стигнете до категорията от най-високо ниво (т.е. категорията, на която не е присвоено parent_id?


person BenM    schedule 25.06.2011    source източник


Отговори (2)


Просто използвайте цикъла while за това.

while($child->hasParent()) {
     echo $child->name();
     $child = $child->Parent();
}
person Balanivash    schedule 25.06.2011

If(родителски клас==null)

след това дъщерен клас==null

иначе има родителски клас (нула)==0

повторете

person john mathew    schedule 28.05.2013