Wrz
17
2015
17
2015
Drzewo kategorii – budowa struktury od dołu do góry
W trakcie prac nad wtyczką generującą ofertę produktów sklepu w formacie XML oraz JSON natrafiłem na problem budowy struktury drzewa kategorii.
Struktura drzewa kategorii generowana jest rekurencyjnie. Najczęstszy przypadek to od góry (rodzica) w dół (do dziecka). Mając ID kategorii nadrzędnej jesteśmy w stanie znaleźć jej dzieci dzięki czemu schodzimy coraz niżej.
Ciekawszy temat pojawia się w momencie budowy drzewa kategorii zaczynając od dołu (dziecka) idąc w górę. Poniżej przedstawiam kod, dzięki któremu to osiągniemy.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
function getCategoryTree( $id, $category_array = array() ) { // pobieranie ID rodzica wraz z nazwą $category_query = mysql_query(" SELECT cd.categories_name, c.parent_id FROM categories c, categories_description cd WHERE c.categories_id = '" . (int)$id . "' AND c.categories_id = cd.categories_id "); $category = mysql_fetch_array($category_query); // ID równe zero oznacza kategorię "root", koniec przeszukiwań if ( $id > 0 ) { // ustawiamy początkowy element tablicy w drzewie kategorii if ( count($category_array) == 0 ) { $category_array[0] = array( 'id' => $id, 'name' => $category['categories_name'] ); } else { // przechwytujemy dziecko $temp = $category_array[count($category_array)-1]; // zamieniamy miejscami dziecko z rodzicem $category_array[count($category_array)-1] = array( 'id' => $id, 'name' => $category['categories_name'] ); // wsadzamy w nowym miejscu rodzica, jego dziecko $category_array[count($category_array)-1]['child_category'] = $temp; } // idziemy w górę drzewa kategorii szukając kolejnego rodzica $category_array = getCategoryTree($category['parent_id'], $category_array); } // zwracamy dotychczasowo zbudowaną strukturę drzewa return $category_array; } |
Tagi: php
Podobne tematy
4 komentarze + Dodaj komentarz
Dodaj komentarz
O mnie
Najnowsze wpisy
- Drzewo kategorii – budowa struktury od dołu do góry
- PHPExcel – export + import pliku XLS
- WordPress + Polylang – Tworzenie klasy CSS z ID strony/wpisu w wybranym języku
- Mailing – Poprawna konstrukcja szablonu maila HTML/CSS i prawidłowy wygląd w programie pocztowym
- Szukasz programisty PHP dla e-commerce?
Też miałem taki problem i długo się zastanawiałem jak to ugryźć.
Dzięki Tobie już wiem. Wpis oceniam jako bardzo przydatny.
Świetnie informacje. Wpis faktycznie można śmiało zaliczyć do pomocnych.
Jeśli chodzi o budowę kategorii to często miałem z tym naprawdę poważne problemy.
Drzewo kategorii zawsze sprawiało mi największe problemy. Uważam, że warto się tego nauczyć.