Autor Zpráva
John332
Profil *
Dobry den,

snazil jsem se hledat zde na foru, ale konkretni priklad, nebo podobny, ze ktereho byh mohl odvodit muj problem, jsem nenasel. Jde o to, ze mam v databazi takovouto tabulku:

a potreboval bych kategore vypsat do takovehoto stromu:
Mobilni Telefony
- Nokia
- Alcatel
- Motorola
Prislusenstvi
- Kabely
- Sluchatka
Vysilacky
- na dalku
- detske
- na hrani
Radia
- Retro
- Nova
HiFi
- Velke soustavy
- Male sousstavy

Jak je videt, tak ID se plni automaticky a je jedinecne.. subcategory je pote "odkaz" na dane ID nadrazene kategorie... kdyz je v UBCATEGORY hodnota 0, tak se jedna o hlavni kategorie (kdyz je tam 1, tak dana podkategorie patri do kategorie, ktera ma ID 1).

Podarilo se mi to vypsat tak, ze jsem si udelal vyber z db, naplnil pole, ktera jsem pres while vypsal. Do tohoto cyklu while, jsem "vnoril" jeste jeden vyber z te same tabulky, kde ovsem byla podminka typu: WHERE subcategory=$pole['id']... Prijde mi to ovsem dost neefektivni, mit kvuli takoveto dronosti 2 vybery z databaze.. nejde to vyresit jinym zpusobem prosim? rsim to uz asi 3 hodinky a nejak se mi nedari, budu rad za kazde nasmerovani.

Dik moc,
Honza
John332
Profil *
Jeste doplnuji dosavadni kod ktery mi to vypise presne tak, jak pozaduji... ale jak rikam, asi to je dosti neefektivni =o/ snad nekdo buete vedet poradit.

Dekuji, Tom
<?php
//vypis katgorie
$query = mysql_query("SELECT * FROM `".$tt_categories."` WHERE subcategory=0") or die("MySQL chyba");
while ($draw = mysql_fetch_assoc($query)) {
  $ID = $draw['id'];
  $Titulek = $draw['title'];
  echo "$Titulek<br>";
  
  //vypis subkategorie
  $query2 = mysql_query("SELECT * FROM `".$tt_categories."` WHERE subcategory=$ID") or die("MySQL chyba");
  while ($draw2 = mysql_fetch_assoc($query2)) {
    $Titulek2 = $draw2['title'];
    echo "- $Titulek2<br>";
  }
}
?>
Joker
Profil
John332:
Nejdřív se zeptám: Víte naprosto jistě, že nikdy nebudete potřebovat víc než dvě úrovně kategorií (= hlavní kategorie a jednu úroveň podkategorií)?
John332
Profil *
popravde jiste to nevim, ale prozatim mi to takto staci (apson na 2 mesice chodu webove prezentace, pak se to mozna bude rozsirovat...). Asi je pravda ze bude vhodnejsi si udelat nejakou fci, ktera bude vypisovat i napr 30 podkategorii nez abych to omezoval pouze na dve. :) ale hacek asi bude v tom, ze mi dela problem vypsat i ty dve (kdyz nepocitam ten muj "neelegantni" pocin co jsem uvedl.
Joker
Profil
John332:
apson na 2 mesice chodu webove prezentace, pak se to mozna bude rozsirovat
No to je lepší to rovnou udělat pořádně, ne? :-)
Nastudujte si: http://interval.cz/clanky/metody-ukladani-stromovych-dat-v-relacnich-databazich/
John332
Profil *
to je pravda :) ok diky za odkaz, mrknu se na to ;)

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: