Autor Zpráva
dehtak
Profil
Zrdavím zaboha nemohu přijít na to jak vypsat veškerej obsah i s jejich podsložkami.
Ty podsložky mohou mit další podsložky a tak třeba donekonečna.
Říká se tomu myslím Subquery.

Abych to vysvětlil vezmu příklad třeba menu list který by vypadal třeba takto:
 
MENU 1
       POLOZKA 1 V MENU 1
       POLOZKA 2 V MENU 1
             POLOZKA 1 V POLOZCE 2 V MENU 1
             POLOZKA 2 V POLOZCE 2 V MENU 1
                   POLOZKA 1 V POLOZCE 2 V  POLOZCE 2 V MENU 1
 MENU 2
     POLOZKA 1 V MENU 2
 
Tak jsem to vyřešil tak, že jsem udělal jednu tabulku datábaze a do ní dal sloupec id a sloupec _id
V sloupci _id bude id nadřazené položky .
Dejme tomu, menu1 má id=1 a _id=0 tak položka v menu 1 bude mit třeba id=2 a _id=1

No a kdybych to chtěl vypsat z databáze musel bych to napsat takto:
$result1=db::query("SELECT * FROM menu WHERE _id='0'");
  while ($row1=db::assoc($result1) ){
        
        $result2=db::query("SELECT * FROM menu WHERE _id='".$row1['id']."'");
        while ($row2=db::assoc($result2) ){
                 atd.... 
        }

  }
Ale to je nesmysl.
Myslím , že nejlepší by bylo, vypsat kompetně celou databázy a pak seřadit .
$result=db::query("SELECT * FROM menu");
  while ($row=db::assoc($result) ){
    $menu[]=$row;  
 }
 function_serad($menu);
No a tady sem zaseklej , upravdu nevím jak to seřadit .
Neexistuje na to nejaka třída nebo funkce ?
Lamicz
Profil
To je normální stromová struktura, ne? Nebo jsem něco přehlédl? Řeší se to výběrem celého stromu a rekurzivním procházením a tříděním, na netu je kolem toho plno článků, i např. od Jakuba Vrány - traverzování kolem stromu. Doufám, že nepíšu úplnou blbost...
dehtak
Profil
Lamicz:
jasne ze je to stromova stroktura. Nekdy proste nevim pod jakym slovem hledat. Sem uz z tech vsech jazyku zblblej.
Zkusim pohledat a dam vedet.
dehtak
Profil
Lamicz:
Tak uz jsem to nasel . Diky
http://stackoverflow.com/questions/7874849/how-to-sort-flat-array-into-multidimensional-tree

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: