Pierwsza główna kategoria i jej podkategorie ładuje i wyświetla się prawidłowo,
ale następne główne kategorie wraz z potomkami nie.
Wygląda to jakby dane były nadpisywane tu:
<?php $this->c_parentcats[$i] = new cats_tree($rek['id'], $rek['name'], $rek['level'], $deep+1); ?>
Baza wygląda tak:
id | name | parent_id | level
Proszę o pomoc, bo już sam nie mogę dojść co jest źle.
[EDIT: Błąd był w klasie obsługującej zapytania do bazy, zostawiam kod może sie komuś przyda]
<?php function show_cats_tree($start = 0, $level = 1) { // konstrkucja drzewa kategorii // cat id, cat name, level, glebokosc $tree = new cats_tree($start, '', $level, -1); //wyswietlanie drzewa $tree->show(); } ?>
<?php // klasa cats_tree - odpowiada za budowanie drzewa class cats_tree { // zmienne skladowe public $c_cat_id; public $c_title; public $c_level; public $c_deep; public $c_parentcats; public function __construct($cat_id, $name, $level, $deep) { // ustalanie wartosc dla zmiennych $this->c_cat_id = $cat_id; $this->c_name = $name; $this->c_level = $level; $this->c_deep = $deep; // ważne jesli cat posiada potomkow, inaczej nie pobiera danych if($level=='1' || $level=='2') { // for( $i = 0; $rek = $db -> fetch_row(); $i++ ) // zrobilem z while bo jest szybsze $i=0; while($rek = $db -> fetch_row($sql)) { $this->c_parentcats[$i] = new cats_tree($rek['id'], $rek['name'], $rek['level'], $deep+1); $i++; } } } public function show() { // jesli nie jest to wezel glowny(zerowy) to wyswietla kategorie if($this->c_deep > '-1') { for( $i = 0; $i < $this->c_deep; $i++ ) { } } for( $i = 0; $i < $subcats; $i++ ) { // wyswietlanie podkategorii $rzad = $this->c_parentcats[$i]->show(); } } } ?>