Autor | Zpráva | ||
---|---|---|---|
Tonik1247 Profil * |
#1 · Zasláno: 6. 2. 2019, 10:47:26
Zdravím Vás,
Mám jistý problém, který mi teď nedá spát :D Vypisuji si kategorie (stromově) z databáze, ale potřebuji je vypsat ala no-limit pro pole "subcategories". Jenže mě to vždy vypne (skončí) mám tabulku id / parent / name / ord / urlname a funkci public function getCategoires( $parent = 0 ){ $this->tree=array(); $x=0; $this->query = Dquery("SELECT * FROM category WHERE parent=$parent ORDER BY name ASC"); while ($this->cat = Darray($this->query)) { $x++; $this->tree[] = array( "id" => $this->cat["id"], "name" => $this->cat["name"], "urlname" => $this->cat["urlname"], "subcategories" => $this->getCategories ( $this->cat["id"] ) ); } return $this->tree; } a potřebuji, aby mi to vrátilo pole se všemi kategoriemi tak, jak jsou pod sebou zařazené Díky za pomoc. |
||
Kajman Profil |
#2 · Zasláno: 6. 2. 2019, 11:13:18
Tonik1247:
„Jenže mě to vždy vypne“ Běží to tak dlouho, že usnete, nebo jak vás to vypíná? Je něco v error logu? Nemáte jen data zacyklená? To by šlo ve funkci ošetřit např. počítaným levelem zanoření a jeho maximálního limitu. Na kategorie to není ideální kód. Pokud databáze neumí rekurzivní dotazy, tak si můžete pomoci sloupci navíc a traverzováním kolem stromu. Nebo načíst všechny kategorie jedním dotazem (pokud jich není moc) a zanoření udělat až v php nad tímto polem dat. Nemáte možnost přímo použít rekurzivní dotazy (záleží na databazí a její verzi)? |
||
Tonik1247 Profil * |
#3 · Zasláno: 6. 2. 2019, 13:46:36
Tím, že mě to vypíná jsem myslel to, jakoby se to pole $this->tree nahradilo (přemazalo) když tu funkci znova zavolám v "subcategories"
|
||
blaaablaaa Profil |
#4 · Zasláno: 6. 2. 2019, 14:04:32
Tonik1247:
Na začátku metody je $this->tree = array(), takže ano, vždy pole vymažeš. Použij lokální proměnnou. |
||
Časová prodleva: 6 let
|
0