Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 15 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.09.07
Prihlásený: 30.11.11
Príspevky: 143
Témy: 37
Príspevok NapísalOffline : 19.05.2010 17:02

Zdravím. Som opäť s logikou v koncoch. Posúďte sami.

Z indexu volám do výpisu $page->RenderSortiment();

Rendder sortiment vyzera nasledovne:
Kód:
   function RenderSortiment()
   {
      global $app;
      
      $sqlQuery = "SELECT  S.*, count(S.ID) FROM clSortiment S
         INNER JOIN Product P ON P.clSortiment=S.ID
         WHERE S.DateValidTo IS NULL AND P.DateValidTo IS NULL AND S.nadkat = 0
         GROUP BY S.ID ORDER  BY Value";
      $result = $app->Db->Select($sqlQuery);
      while ($row = mysql_fetch_object($result))
      {
      

         echo "      <li><a href='?p=sortiment&id=$row->ID' title='$row->Value'> " .
            $row->Value . " &raquo;" .
            "</a></li>\n";
      
         if ($row->ID == $this->id)   // generovanie submenu
         {
            $this->RenderSortimentSub($row->ID);
         }
      }
   }


Tu je to myslim zrozumitelne. RenderSortimentSub som prerobil v ramci logiky- Selectnem kategoriu podla jej ID, pozriem sa na jej nadkategoriu, zapisem ju do pola. To iste spravim s dalsou nadkategoriou az po nultu uroven. Takto naplnene pole dam potom na foreach vypis, kde volam RenderSortimentSub pokial v poli nieco je( moj prepracovany mozog si mysli, ze by tym padom malo vypisat vsetky podkategorie zainteresovanych kategorii:)

Kód:
      function RenderSortimentSub($sortimentId)
   {
         global $app;
   
         $sqlQuery = "SELECT * FROM `clSortiment` WHERE ID = $sortimentId";
      $result = $app->Db->Select($sqlQuery);
      $row = mysql_fetch_object($result);
                global $poleNadkat;
     $poleNadkat[] = $row->nadkat;//Pridam ID povodne volanej polozky menu
      $this->SelectNadkat($row->nadkat);
             


   

      
      echo "<ol>&raquo;";
         $sqlQuery = "SELECT * FROM `clSortiment` WHERE nadkat = $sortimentId";
      $result = $app->Db->Select($sqlQuery);
      while ($row = mysql_fetch_object($result))
      {
      echo "   <li><a href='?p=sortiment&id=$row->ID' title='$row->Value'> " .
            $row->Value . " " .
            "</a></li>\n";

      }
      echo "&raquo;</ol>\n";
   
//   foreach ($poleNadkat as &$value) { // Zabespecenie rekurzie funkcie
//    $this->RenderSortimentSub($value);
//}

   }


   function SelectNadkat($nadkategoria)  //Plnim zasobnik volani funkcie tvorby menu
      {
      
         global $app;
            $sqlQuery = "SELECT * FROM `clSortiment` WHERE ID = $nadkategoria";
      $result = $app->Db->Select($sqlQuery);
      $row = mysql_fetch_object($result);
          global $poleNadkat;
            $poleNadkat[] = $row->nadkat;//Pridam cislo nadkategorie do pola
         if ($row->nadkat != 0)   // overenie konca rekurzie funkcie
         {
         
      $this->SelectNadkat($row->nadkat);

         }
      
      }


Dufam ze som tu dal vsetko relevantne. Dajte mi prosim vediet ci na to idem velmi zle alebo len trochu. :) Vdaka


Offline

Užívateľ
Užívateľ
mnohourovnovy vypis kategorii z DB

Registrovaný: 26.12.06
Prihlásený: 16.11.19
Príspevky: 3971
Témy: 181
Bydlisko: Nitra / Bra...
Príspevok NapísalOffline : 20.05.2010 8:59

http://emer.grafika4u.sk/clanky/php-mys ... eho-dotazu

pomoze?







_________________
Sorry za prelkepy
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.09.07
Prihlásený: 30.11.11
Príspevky: 143
Témy: 37
Príspevok Napísal autor témyOffline : 20.05.2010 15:17

Jasne že pomôže. :) Omnoho elegantnejšie riešenie do akého som sa púšťal. Staćilo dorobiť spomínané pole na načítanie všetkých nadkategórií v selekte a už to funguje ako postupne vyklikávateľné riešenie. :) Vďaka


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 20.05.2010 15:44

nooooooo testoval to uz niekto pri tabulke s objemom niekolko desiatok az stoviek MB ? nacitat cely obsah velkej tabulky pre ziskanie stromu z ktoreho realne mozno potrebujeme len jednu vetvu je dost riskantne :)


Offline

Užívateľ
Užívateľ
mnohourovnovy vypis kategorii z DB

Registrovaný: 26.12.06
Prihlásený: 16.11.19
Príspevky: 3971
Témy: 181
Bydlisko: Nitra / Bra...
Príspevok NapísalOffline : 21.05.2010 8:34

tak neviem ci niekto bude vypisovať strom s niekoľko stotisícov záznamov.
ale možno narážaš na to, že existuje aj takéto riešenie:

http://articles.sitepoint.com/article/h ... a-database

lenže pokiaľ je v DB iba pár desiatok (alebo stoviek) záznamov, nevidím dôvod, prečo by som nemal používať tamto riešenie







_________________
Sorry za prelkepy
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 21.05.2010 8:40

no ved ja som pisal ze v pripade VELKEJ tabulky :) moj prispevok bol len upozornenie ze tvoj sposob nemusi byt univerzalne najlepsi a treba si uvedomit co to moze sposobit v pripade velkej tabulky. videl som tabulky ktore boli takto organizovane a boli velke lebo vnich bola cela organizacna struktura pomerne velkej firmy :) samozrejme v pripade malej tabulky bude tvoje riesenie vykonnejsie :)


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.09.07
Prihlásený: 30.11.11
Príspevky: 143
Témy: 37
Príspevok Napísal autor témyOffline : 22.05.2010 1:37

Neviem ci si si vsimol moju poznamocku o poupraveni selektu. Tym padom vyberam vzdy len to, co realne na zobrazeni potrebujem. Nic viac.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.09.07
Prihlásený: 30.11.11
Príspevky: 143
Témy: 37
Príspevok Napísal autor témyOffline : 22.05.2010 1:41

Mimochodom, este stale s temou suvisiaca otazka...
Viete mi niekto povedat preco mi nacita to pole v poradi od najmensej ID?? Podla mna na to nema ziaden dovod. V manuali pisu, ze implode to dava do selektu v takom poradi, a akom su v poli ulozene polozky. Tak nechapem.

Kód:
     $Select = mysql_query("SELECT * FROM clSortiment WHERE ID IN ('" . implode("', '", $poleNadkat) . "') AND DateValidTo IS NULL AND ID != 0 "); //Selektnem len to co sa po danom stlaceni vypisat ma. Vsetky chcene kategorie v aktualnom strome
     while($Row = mysql_fetch_assoc($Select)){
     
         $Arr[$Row['ID']] = $Value['ID'];


     }


Offline

Správca fóra
Správca fóra
mnohourovnovy vypis kategorii z DB

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 22.05.2010 7:02

implode ano, ale IN pracuje inak ako by si mozno ocakaval ;)







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.09.07
Prihlásený: 30.11.11
Príspevky: 143
Témy: 37
Príspevok Napísal autor témyOffline : 22.05.2010 12:18

To ma tiez napadlo, ale podla vsetkeho, ani ten by sa nemal spravat inak- http://www.sql-tutorial.net/SQL-IN.asp


Offline

Správca fóra
Správca fóra
mnohourovnovy vypis kategorii z DB

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 22.05.2010 12:26

vysledok sa ti vrati v poradi, ako su jednotlive zaznamy ulozene v tabulke, a nie podla poradia uvedeneho v IN... ak chces zachovat nejake poradie, tak to poradie mozes pouzit napr. v ORDER BY







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.09.07
Prihlásený: 30.11.11
Príspevky: 143
Témy: 37
Príspevok Napísal autor témyOffline : 22.05.2010 12:35

Hmm, a to uz tazko prerobim... Na aktualnu podstranku vypisujem jednotlive urovne stylom- Hlavna stanka» Podkategoria».....» Aktualna stranka

A ked mi to poprehadzuje, je cely vypis na hlavu. Dalo by sa to pole "preusporiadat" podla toho pola poleNadkat co vkladam do query? Este takuto vidim moznost, len neviem ci to je mozne...

Order ma napadol ako prvy, ale vtlacit tam logiku- vypis podla poradia v akej su naveznosti (ktora je cia nadkategoria) sa mi zda nepreveditelne.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.09.07
Prihlásený: 30.11.11
Príspevky: 143
Témy: 37
Príspevok Napísal autor témyOffline : 22.05.2010 15:37

Opät par hodin patrania, spekulovania a skrabania si lavou nohou prave ucho, ale nakoniec som sa "vratil ku korenom" a vcelku elegantne sa to cez ten ORDER samozrejme dalo... Tu je vysledny selekt, nech to podobneho nestastnika ako ja pre buducnost inspiruje:

Kód:
     $Select = mysql_query("SELECT * FROM clSortiment WHERE ID IN ('" . implode("', '", $poleNadkat) . "') AND DateValidTo IS NULL ORDER BY ID = '" . implode("'DESC, ID = '", $poleNadkat) . "'");


Ten vyberie za pomoci zadavaneho ID vsetky relevantne kategorie aj nadkategorie pomocou vypisu pola poleNadkat a usporiada query v poradi tohto pola(Nech sa nestane tak ako mne, ze to odbura logicku postupnost kategorii.)
Tak opat dik Sten za usmernenie.

Majte pekny den.


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 23.05.2010 20:02

no problem bude vtom ze associativne polia vacsinou vykonavaku zoradovanie podla svojho indexu cize ak do pola vlozis polozku s indexom 'b' a nasladne 'a' tak pri vybere ti aj tak ako prvu polozku vrati 'a' az potom 'b'


Offline

Správca fóra
Správca fóra
mnohourovnovy vypis kategorii z DB

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 23.05.2010 21:08

to je blbost :)







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Odpovedať na tému [ Príspevkov: 15 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Viacero kategorii v DB

v Databázy

13

905

25.07.2008 17:27

p360t Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zencart ..nekorektné zobrazovanie názvov kategórii

v Redakčné systémy

1

776

15.10.2009 22:21

dKWt Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. woocommerce rozličné rozloženie kategórii produkov

v PHP, ASP

1

390

22.02.2017 22:06

trenavar Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. FB sprava priatelov a ich rozdelovanie do kategorii

v Sociálne siete

4

299

18.05.2013 12:16

jtbs Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. 55" Sony Bravia KD-55XE9005 skúsenosti - vs iný TV v cenovej kategórii?

v Monitory, televízory a projektory

1

438

03.09.2018 0:00

Eidam Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Vypis

v PHP, ASP

13

1000

26.06.2008 10:53

GoodWill Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. percentualny vypis

v PHP, ASP

4

449

23.05.2010 21:53

rooobertek Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. MySQL vypis

v Databázy

1

313

07.01.2014 15:34

kudzo3 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Výpis php

v PHP, ASP

11

591

14.04.2011 15:58

w3r0 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Stromový výpis

v Sieťové a internetové programy

0

424

19.02.2008 15:29

dsljohn Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Vypis dni

v PHP, ASP

6

732

19.11.2010 13:30

emer Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. vypis mailov

v Ostatné

3

482

27.08.2010 15:51

1987123 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Výpis zložky

v PHP, ASP

6

480

30.05.2012 20:04

xxx9955 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. rozdvojený výpis?

v PHP, ASP

4

351

21.06.2014 9:16

MasterMatoSK Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. výpis adresárov

v PHP, ASP

11

640

14.05.2008 21:52

Tominator Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. výpis zariadení

v Operačné systémy Microsoft

14

578

17.02.2016 21:06

bobino38 Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra