abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 22:44 | Nová verze

    Programovací jazyk Python byl vydán v nové major verzi 3.15.0. Podrobný přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    včera 22:33 | Zajímavý projekt

    BIGWORDS.PAGE je open-source webová aplikace, která po otevření odkazu v prohlížeči vykreslí přes celou obrazovku jednoduché informační sdělení. Zpráva i její nastavení jsou uložené v části URL za znakem #, například odkaz https://bigwords.page/#abclinuxu zobrazí jako velký bílý nápis 'abclinuxu' na černém pozadí. Obsah odkazu lze upravovat i vestavěným editorem, ten umožňuje nastavovat formátování a vizuální efekty textu, časovače, QR kódy a obrázky. Zdrojový kód je dostupný pod licencí MIT na GitHubu.

    ❗Červivý Hřib krade❗ | Komentářů: 5
    včera 11:55 | Upozornění

    V neděli 11. října proběhne rotace klíče kořenové zóny. Podruhé v historii. Ondřej Filip na blogu CZ.NIC: "Pokud je pro Vás DNS protokol spíše výzva, ale přesto spravujete nějakou síť či DNS resolver, zkuste si jednoduchý test, který připravila firma Cloudflare na této adrese. Obzvláště zbystřit byste měli, pokud uvidíte nějaká červená políčka."

    Ladislav Hagara | Komentářů: 7
    včera 09:55 | IT novinky

    Vláda Spojených států se rozhodla vyřadit americkou softwarovou společnost Microsoft a několik dalších velkých technologických podniků z programu, který umožňuje kvalifikovaným zahraničním pracovníkům získat povolení k trvalému pobytu. Oznámila to včera administrativa amerického prezidenta Donalda Trumpa. Opatření zdůvodnila rozsáhlým zneužíváním programu, který je dlouhodobě terčem kritiky ze strany Trumpových příznivců, neboť prý znevýhodňuje americké pracovníky.

    Ladislav Hagara | Komentářů: 11
    včera 09:44 | IT novinky

    Datové centrum největší ruské technologické společnosti Jandex v Rjazaňské oblasti se stalo cílem dronového útoku a zastavilo provoz. Jandexu se někdy přezdívá „ruský Google“. Provozuje nejoblíbenější internetový vyhledávač v Rusku nebo aplikace pro objednávky jídla a taxi. Využívají jej desítky milionů lidí v rusky mluvících zemích.

    Ladislav Hagara | Komentářů: 12
    včera 09:33 | Nová verze

    Francouzská společnost Mistral AI představila Mistral Large 4 (interně přezdívaný 'le Chonk', volně přeloženo 'pořádný macek'), 'open-weight multimodální hybridní instruct-and-reasoning model s architekturou granulárního MoE, nativně podporující více jak 160 jazyků'. Model má přes jeden bilión parametrů, z nichž při práci využívá 49 miliard, kontextové okno o délce milion tokenů a obrazový enkodér o 1,6 miliardách parametrů.

    … více »
    ❗Červivý Hřib krade❗ | Komentářů: 2
    včera 03:22 | Nová verze

    Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.20. Díky 227 přispěvatelům.

    Ladislav Hagara | Komentářů: 0
    včera 03:11 | Komunita

    Simon Long oznámil Raspberry Pi Desktop pro PC a Mac s Intelem postavený na aktualizovaném Debianu 13 Trixie. S klientem Raspberry Pi Connect pro vzdálenou správu. Ke stažení je vedle Raspberry Pi OS pro Raspberry Pi.

    Ladislav Hagara | Komentářů: 2
    8.10. 21:33 | Zajímavý projekt

    ESP32-C3 adblock přemění lacinou vývojovou desku ESP32‑C3 na samostatný DNS blokovač nejenom reklamních domén, minimalistickou alternativu k populárnímu Pi-hole. ESP32-C3 adblock místo objemných názvů domén ukládá jejich 40-bitové FNV-1a hashe do flash paměti, které pak binárně prohledává, kontrola jedné domény trvá přibližně 10 milisekund. Blocklist pojme až 537 tisíc domén a lze jej spravovat přes webové rozhraní. Projekt zatím

    … více »
    ❗Červivý Hřib krade❗ | Komentářů: 0
    8.10. 21:00 | Zajímavý software

    ArtCraft je sada open source aplikací pro práci s obrázky a videi "inspirovaných" aplikacemi od Adobe. Napsaných v Rustu. Pro MacOS, Windows i Linux. Běží také ve webovém prohlížeči. Aktuálně se jedná o 7 aplikací: PhotoCraft (Photoshop), VectorCraft (Illustrator), FilmCraft (Premiere Pro), LightCraft (Lightroom), PdfCraft (Acrobat), EffectCraft (After Effects) a DesignCraft (InDesign). Zdrojové kódy jsou k dispozici na GitHubu.

    Ladislav Hagara | Komentářů: 8
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2820 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    Rozcestník

    Dotaz: Strašně moc prosím o pomoc zdejší profesionály

    19.9.2011 23:31 Jurko
    Strašně moc prosím o pomoc zdejší profesionály
    Přečteno: 1091×
    Dobrý večer, dělám menu a nejsem schopen s tím už druhý den hnout. Vyzkoušel jsem vážně kde co ale výsledek se nedostavil :-( O co jde. V mysql mám takové uspořádání
    ID___NAME__________________PARENT_ID
    
    1____Kategorie zboží_______0
    2____Procesory_____________1
    3____Intel_________________2
    4____Pentium IV____________3
    5____Celeron_______________3
    6____AMD___________________2
    
    a potřebuji v php napsat funkci, která dokáže vypsat ty kategorie v takovém tvaru.
    Kategorie zboží > Procesory > Intel > Pentium IV
    Kategorie zboží > Procesory > Intel > Celeron
    Kategorie zboží > Procesory > AMD
    Mě se podařilo sehnat jen kategorie které se vypisují pod sebe. viz kód
    function getTree($parent, $level) { 
      $result = mysql_query('SELECT * FROM TREE WHERE PARENT_ID='.$parent); 
      while ($row = mysql_fetch_assoc($result)) { 
        echo str_repeat(" ",$level).$row['NAME']."
    "; getTree($row['ID'], $level++); } }
    Nepomohl by mi s tím nějaký hodně zkušený profesionál, jelikož už vím, že to je zatraceně těžké jestli vůbec možné:((
    Předem děkuji za snahu pomoci
    Je to z tohoto článku: zde

    Odpovědi

    20.9.2011 01:49 buff | skóre: 10 | blog: buff
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    function getTree($parent, $path) { 
      $result = mysql_query('SELECT * FROM TREE WHERE PARENT_ID='.$parent);
      if (mysql_num_rows($result) == 0) {
        echo implode('>', $path) . "\n";
      }
      while ($row = mysql_fetch_assoc($result)) {
        getTree($row['ID'], array_merge($path, array($row['NAME'])); 
      } 
    }
    
    Psáno z hlavy, netestováno, možná je to úplná kravina. ;-) Ale třeba to aspoň inspiruje.
    20.9.2011 13:14 Jurko
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Psáno z hlavy, netestováno, možná je to úplná kravina. ;-) Ale třeba to aspoň inspiruje.
    Když zavolám tu funkci
    getTree($parent, $path);
    tak co je ten druhý parametr $path ?

    tady akorát chyběla závorka, ale stejně to nic nevypíše :(
    getTree($row['ID'], array_merge($path, array($row['NAME'])));

    v té první funkci jsem to volal pro vypsání všech kategorii takto
    getTree(0, 0);
    a teď to mám volat jak? Děkuji
    20.9.2011 15:30 buff | skóre: 10 | blog: buff
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Mělo by se to volat s prázdným polem.
    getTree(0, array());
    
    20.9.2011 16:17 Jurko
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Mělo by se to volat s prázdným polem.
    getTree(0, array());
    
    Když to takto zavolám, tak dostanu na výstupu tohle
    Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 71 bytes)
    20.9.2011 17:50 buff | skóre: 10 | blog: buff
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    To je velmi zvláštní, nedalo mi to a vyzkoušel jsem to. Funguje.

    Toto je přesný kód, který jsem použil.
    function getTree($parent, $path) { 
      $result = mysql_query('SELECT * FROM TREE WHERE PARENT_ID='.$parent)
        or die(mysql_error());
      if (mysql_num_rows($result) == 0) {
        echo implode('>', $path) . "\n";
      }
      while ($row = mysql_fetch_assoc($result)) {
        getTree($row['ID'], array_merge($path, array($row['NAME']))); 
      } 
    }
    
    mysql_connect("localhost", "user", "pass") or die(mysql_error());
    mysql_select_db("dbname") or die(mysql_error());
    
    getTree(0, array());
    
    20.9.2011 17:52 buff | skóre: 10 | blog: buff
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Výstup:
    Kategorie zboží>Procesory>Intel>Pentium
    Kategorie zboží>Procesory>Intel>Celeron
    Kategorie zboží>Procesory>AMD
    
    20.9.2011 15:35 buff | skóre: 10 | blog: buff
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    tak co je ten druhý parametr $path ?
    Pole, ve kterém je popsána cesta k aktuálnímu zanoření do rekurze. Takže na začátku by měla být prázdná, v jistém okamžiku to bude třeba:
    $path == array( 'Kategorie zboží', 'Procesory', 'Intel' )
    
    A zavolá se getTree(3, $path), což by mělo zařídit vypsání
    Kategorie zboží > Procesory > Intel > Pentium IV
    Kategorie zboží > Procesory > Intel > Celeron
    
    20.9.2011 02:33 lertimir | skóre: 64 | blog: Par_slov
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Hm hezky je vidět, jak snaha pracovat s frameworky, kategoriemi a zbavuje mnohé schopnosti základního myšlení. Pokud mám kategorie správně vypsané a pouze se mi píší pod sebe místo vedle sebe na řádek, tak tam někam nesmyslně posílám znak nový řádek.

    Ač v PHP neprogramuji a 30 let jsem z výšky pryč odhaduji, že tím místem je konec 4. řádku výpisu, kde je v uvozovkách skok na nový řádek a pak ukončení uvozovek a asi PHP oblast mezi uvozovkami vezme natvrdo jako binární string.
    20.9.2011 02:40 buff | skóre: 10 | blog: buff
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Nene, soudíš příliš rychle. Jeho funkce zřejmě vrací něco jako toto:
    Kategorie zboží
      Procesory
        Intel
          Pentium IV
          Celeron
        AMD
    
    Takže nejde jen o odstranění nového řádku, ale o mírně komplexnější změnu zápisu.
    20.9.2011 13:15 Jurko
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Ano, ten výpis je přesně takový ;)
    20.9.2011 10:22 blondak | skóre: 36 | blog: Blondak | Čáslav
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    No tak to bych použil Traverzování kolem stomu a pokud jde o zobrazení, pak bych vyhledal konečné listy, kde RGT=LTF+1 a vypsal jeho předky, zhruba nějak takto(netestováno)
      mysql_query('SET SESSION group_concat_max_len = max_allowed_packet');
      $result = mysql_query('SELECT GROUP_CONCAT( tree2.name ORDER BY tree2.lft ASC SEPARATOR " > " ) as path FROM tree LEFT JOIN tree tree2 ON tree2.lft <= tree.lft WHERE tree.RGT = tree.LFT +1 GROUP BY tree.id');
      while ($row = mysql_fetch_assoc($result)) {
        echo $row['path'];
      }
    
    Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
    20.9.2011 10:29 blondak | skóre: 36 | blog: Blondak | Čáslav
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    tak to query by mělo být ještě takto
    SELECT 
      GROUP_CONCAT( tree2.name ORDER BY tree2.lft ASC SEPARATOR " > " ) as path 
    FROM 
      tree 
        LEFT JOIN tree tree2 ON tree2.lft <= tree.lft AND tree2.rgt >= tree.rgt
    WHERE 
      tree.RGT = tree.LFT + 1 
    GROUP BY 
      tree.id
    
    Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
    20.9.2011 13:16 Jurko
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Ty vaše 2 řešení snad nejsou pro uvedenou tabulku v mysql, ne?
    20.9.2011 14:36 blondak | skóre: 36 | blog: Blondak | Čáslav
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Když se koukneš na tebou odkazovaný článek na kapitolu Traverzování kolem stromu tak tam je to popsané, určitě doporučuji investovat trochu času a používat to, pokud se tedy strom nemění moc často, což naznačené kategorie eshopu asi nebudou.
    Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
    20.9.2011 14:46 blondak | skóre: 36 | blog: Blondak | Čáslav
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Takže pokud to shrnu, tak je řešení
    ALTER TABLE TREE ADD LFT INT NOT NULL DEFAULT 0;
    ALTER TABLE TREE ADD RGT INT NOT NULL DEFAULT 0;
    
    a po přidání položky spustit
    function rebuildTree($parent, $left) {
      $right = $left+1;
      $result = mysql_query('SELECT ID, NAME FROM TREE WHERE PARENT_ID='.$parent);
      while ($row = mysql_fetch_array($result)) {
        $right = rebuild_tree($row['ID'], $right);
      }
      mysql_query('UPDATE TREE SET LFT='.$left.', RGT='.$right.' WHERE ID='.$parent);
      return $right+1;
    }
    pokud to uděláš, do budoucna si docela dost pomůžeš.
    Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
    20.9.2011 16:37 Jurko
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    pokud to uděláš, do budoucna si docela dost pomůžeš.
    Tak jsem vložil dva sql dotazy do mysql, vytvořil se nový sloupec RGT a LFT s hodnotou 0

    pak jsem spustil tu funkci rebuildTree, která přepsala v mysql hodnotu sloupcu RGT a LFT zřejmě náhodnýma číslama :))

    Pak jsem spustil ten výpis, všechno se načetlo ale je to nějaké neseřazené/rozházané. Nešlo by spustit nějak v obráceném pořadí? TO by snad mohlo být lepší pro orientaci, nebo prostě to brát od nejmenšího id :(

    Děkuji
    20.9.2011 16:53 blondak | skóre: 36 | blog: Blondak | Čáslav
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    A co přesně to vypisuje? A s jakými parametry jsu spustil rebuildTree?
    Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
    20.9.2011 17:17 Jurko
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    A co přesně to vypisuje? A s jakými parametry jsu spustil rebuildTree?
    spouštěl jsem to takto rebuildTree(0, 0); a ten výpis je seřazený jakoby od nejvyššího id...
    20.9.2011 17:23 blondak | skóre: 36 | blog: Blondak | Čáslav
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Jak přesně to vypíše a jak by to mělo vypsat, u mě to vypadá v pořádku, máš tam to upravené query?
    Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
    20.9.2011 17:40 Jurko
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Jak přesně to vypíše a jak by to mělo vypsat, u mě to vypadá v pořádku, máš tam to upravené query?
    Asi bude problém někde jinde, mám v tom teď hokej, musím to pořádně vyzkoušet a dám vědět. Ale ještě prosím jedna věc, snažím se přijít na to, co ta čísla v LFT a RGT znamenaji :( Když přidám nebo smažu nějakou kategorii musím spustit znova tu funkci která vložila ta čísla v mysql?

    Díky
    20.9.2011 17:41 blondak | skóre: 36 | blog: Blondak | Čáslav
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Ano, víc ke popsané v tom článku, nebo na googlu
    Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
    20.9.2011 17:47 Jurko
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Tak když přidám nějakou kategorii tak je pak výpis takový
    Kategorie zboží > Procesory > Intel > Pentium IV
    Kategorie zboží > Procesory > AMD
    Ovoce > Jablko > červené
    Kategorie zboží > Procesory > Intel > Celeron > Quadro
    místo
    Kategorie zboží > Procesory > Intel > Pentium IV
    Kategorie zboží > Procesory > AMD
    Kategorie zboží > Procesory > Intel > Celeron > Quadro
    Ovoce > Jablko > červené
    
    21.9.2011 10:54 blondak | skóre: 36 | blog: Blondak | Čáslav
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Třídění by se mělo nastavit ve funkci rebuildTree, která jede po položkách, přidej tam do selectu ORDER BY a podle jakého chceš řadit (pokud nemáš pozici, tak by tam mohlo být třeba ID), při výpisu se automarticky řadí podle LFT, když se koukneš na obrázek ve článku, tak by to mělo přesně odpovídat tomu, co potřebuješ.
    Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
    20.9.2011 18:00 Jurko
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Jak přesně to vypíše a jak by to mělo vypsat, u mě to vypadá v pořádku, máš tam to upravené query?
    upravené query ta mám...

    a ten výpis by měl být asi takový, popořadě..
    Kategorie zboží > Procesory > Intel > Pentium IV
    Kategorie zboží > Procesory > Intel > Celeron > Quadro
    Kategorie zboží > Procesory > AMD
    Ovoce > Jablko > červené

    Založit nové vlákno • Nahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.