Autor Zpráva
Sal!k
Profil *
Caw,

mam 2 tabulky ...

sekce:
id
name

podsekce
id
id_sekce
name

a při vypisu by jsem potreboval aby sa me vypsala sekce a hned pod tim podsekce podle id_sekce ...
Sal!k
Profil *
v podstate chcu aby sa vypsala sekce a hned ktemu podsekce podle id te sekce ... a porad do kola ...
BetaCam
Profil
To de udelat ruznejma způsobama. Jeden z nich je třeba dva loopy neco jako

$query = mysql_query('SELECT id, name FROM sekce');

while($row = mysql_fetch_object($query))
{

   echo $row->name;

   $query2 = mysql_query('SELECT id, id_sekce, name FROM podsekce WHERE id_sekce = '.$row->id);

   while($row2 = mysql_fetch_object($query2))
   {
      echo  $row2->name;
   }
}


ale více či méně záleží na situaci.
Mastodont
Profil
Spíš načíst všechno jedním join dotazem order by id_sekce a ten pak procházet.
BetaCam
Profil
Mastodont
Spíš načíst všechno jedním join dotazem order by id_sekce a ten pak procházet.

Jiste to je také jedna z možností tam je pak ovšem složitější konstrukce pro vypisování.
Mastodont
Profil
Jistě, ovšem je to lepší než možných iks desítek dotazů do db ... viz

http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=6&topic=64 014

:-))
BetaCam
Profil
Mastodont
Jistě, ovšem je to lepší než možných iks desítek dotazů do db ... viz

Samozdřejně proto sem také hned v mém prvním postu napsal, že možností je spousty. U návrho každé aplikace je nutné zamyslet se nad tím k jakému účelu bude sloužit a pro jaké množství dat je ten kód určen. Pokud budu mít 1000 kategorií je jasné, že upřednostním kód kderý nebude posílat 1000+ dotazů na DB. Popravdě sem ten první příklad uvedl hlavně proto, že je nejjednodušší a nejkratší na psaní. :)
ninja
Profil
BetaCam: to co navrhujes rozhodne neni vhodne.


Sal!k: SELECT ...CO_POTREBUJES... FROM sekce LEFT JOIN podsekce ON sekce.id = podsekce.id_sekce ORDER BY sekce.id, podsekce.id_sekce;
BetaCam
Profil
ninja

Ach jo tak znovu.

To co navrhujes rozhodne neni vhodne.

Já sem někde říkal, že je to vhodné?? Ne neříkal! Pouze sem řekl, že je to jedna z možností. Ten kód co sem napsal je "nejrychlejší" ( myslím tím na psaní ne na dobu zpracování či vytížení serveru ) řešení. Další podrobnosti viz můj předchozí post.


SELECT ...CO_POTREBUJES... FROM sekce LEFT JOIN podsekce ON sekce.id = podsekce.id_sekce ORDER BY sekce.id, podsekce.id_sekce;

Tohle je pěkné query, ale četl si co vlastně tazatel chtěl?? Si si opravdu jist, že toto query opravdu vypíše tazatelovi na obrazovku něco jako:

Sekce 1
  Podsekce1
  Podsekce2
Sekce 2
  Podsekce 1
  Podsekce 2
  Podsekce 3
atd...


Já bych řekl, že ne. Maximálně mu tak vrátí Resource. Napiš tedy řešení výpisu dat z tvého dotazu. Ano já se přiznal byl sem línej tady toto řešení psát, ale napsal sem jiné, které ten problém řeší. ( O optimálnosti se nebudu dohadovat viz. předchozí posty ) A co si napsal ty?? Select, kterej ten problém vůbec neřeší. Napsal si jak vydolovat data, ale né jak je vypsat. Hooah
ninja
Profil
BetaCam: Omlouvam se jestli to vyznelo jako utok na tebe. To nebyl zamer. Jen jsme naznacoval ze pro dany ukol neni rozumne delat X dotazu na databazi, kdyz staci jeden.

PHP kod si Sal!k snad vytvori sam.
BetaCam
Profil
ninja
Jen jsme naznacoval ze pro dany ukol neni rozumne delat X dotazu na databazi, kdyz staci jeden.

Ano stim souhlasim ovšem sem línej zde toto řešení psát. :)

PHP kod si Sal!k snad vytvori sam.

No popravdě ze Sal!kova postu to bez urážky moc nevypadá, že by si ho byl schopnej vytvořit sám. :)
ninja
Profil
BetaCam: pokud si to Sal!ik nenapise sam, tvuj kod mu taky nepomuze, protoze tam neni kod s pripojenim k MySQL :0).
BetaCam
Profil
ninja
pokud si to Sal!ik nenapise sam, tvuj kod mu taky nepomuze, protoze tam neni kod s pripojenim k MySQL

Myslim, že pokud pracuje s DB zná základní věci jako je pripojování k DB a select DB. Vetší pochybnosti mám o tom jestli dokáže napsat kód pro výpis dat ve formátu, kterej chce. :)
milbr
Profil *
Pěkný večer,
po kratším hledání jsem nalezl tutu problematiku, kterou bych také potřeboval vyřešit.

Vyzkoušel jsem SELECT category.nadpiscategory, category.parent, product.parent, product.nazev FROM category inner join product ON category.parent = product.parent

a vypisuji
{
while ($producty=MySQL_Fetch_Array($zbozi)):
echo
"
".$producty["nadpiscategory"]."<br>
".$producty["nazev"]."
"
;
endwhile;
};

Vše se vypíš ale chtěl bych Vás poprosit o radu jak upravit SELECT nebo výpis aby se mi z category vypsal jen jeden nadpis a pod něj produkty atd. tak jak to uvádí Sal!k

Tímto způsobem mám vypsáno nadpis nazev nadpis nazev nadpis nazev atd.
Děkuju moc za pomoc
Díky Milan

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:

0