[ 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 | 37
NapísalOffline : 19.05.2010 17:02 | mnohourovnovy vypis kategorii z DB

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 | 181
Bydlisko: Nitra / Bra...
NapísalOffline : 20.05.2010 8:59 | mnohourovnovy vypis kategorii z DB

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 | 37
Napísal autor témyOffline : 20.05.2010 15:17 | mnohourovnovy vypis kategorii z DB

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 | 2
NapísalOffline : 20.05.2010 15:44 | mnohourovnovy vypis kategorii z DB

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 | 181
Bydlisko: Nitra / Bra...
NapísalOffline : 21.05.2010 8:34 | mnohourovnovy vypis kategorii z DB

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 | 2
NapísalOffline : 21.05.2010 8:40 | mnohourovnovy vypis kategorii z DB

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 | 37
Napísal autor témyOffline : 22.05.2010 1:37 | mnohourovnovy vypis kategorii z DB

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 | 37
Napísal autor témyOffline : 22.05.2010 1:41 | mnohourovnovy vypis kategorii z DB

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 | 51
Bydlisko: Bratislava
NapísalOffline : 22.05.2010 7:02 | mnohourovnovy vypis kategorii z DB

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 | 37
Napísal autor témyOffline : 22.05.2010 12:18 | mnohourovnovy vypis kategorii z DB

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 | 51
Bydlisko: Bratislava
NapísalOffline : 22.05.2010 12:26 | mnohourovnovy vypis kategorii z DB

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 | 37
Napísal autor témyOffline : 22.05.2010 12:35 | mnohourovnovy vypis kategorii z DB

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 | 37
Napísal autor témyOffline : 22.05.2010 15:37 | mnohourovnovy vypis kategorii z DB

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 | 2
NapísalOffline : 23.05.2010 20:02 | mnohourovnovy vypis kategorii z DB

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 | 51
Bydlisko: Bratislava
NapísalOffline : 23.05.2010 21:08 | mnohourovnovy vypis kategorii z DB

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
 [ Príspevkov: 15 ] 


mnohourovnovy vypis kategorii z DB



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

959

25.07.2008 17:27

p360t

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

794

15.10.2009 22:21

dKWt

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

woocommerce rozličné rozloženie kategórii produkov

v PHP, ASP

1

421

22.02.2017 22:06

trenavar

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

324

18.05.2013 12:16

jtbs

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

477

03.09.2018 0:00

Eidam

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

Vypis

v PHP, ASP

13

1053

26.06.2008 10:53

GoodWill

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

Výpis php

v PHP, ASP

11

621

14.04.2011 15:58

w3r0

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

Stromový výpis

v Sieťové a internetové programy

0

450

19.02.2008 15:29

dsljohn

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

Vypis dni

v PHP, ASP

6

780

19.11.2010 13:30

emer

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

vypis mailov

v Ostatné

3

504

27.08.2010 15:51

1987123

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

Výpis zložky

v PHP, ASP

6

505

30.05.2012 20:04

xxx9955

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

rozdvojený výpis?

v PHP, ASP

4

375

21.06.2014 9:16

MasterMatoSK

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

výpis adresárov

v PHP, ASP

11

681

14.05.2008 21:52

Tominator

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

výpis zariadení

v Operačné systémy Microsoft

14

613

17.02.2016 21:06

bobino38

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

vypis adresara

v PHP, ASP

3

638

16.12.2009 22:25

stenley

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

zoradeny vypis

v PHP, ASP

1

359

02.05.2012 7:09

BX



© 2005 - 2024 PCforum, edited by JanoF