| 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: 7 let
|
|||
0