Letní akce PHP týden
Pouze tento týden sleva až 80 % na kurzy PHP. Lze kombinovat s akcí Letní slevy na prémiový obsah!
Brno? Vypsali jsme pro vás nové termíny školení Základů programování a OOP v Brně!
Avatar
Miroslav
Člen
Avatar
Miroslav:18.9.2018 19:55

Ahoj všichni,

Rád bych od vás získal radu , pokusím se stručně popsat mé dilema.

Mám v excelu vytvořené makro na doplňování hodnot , celé makro nakonec vytvoří cenovou kalkulaci.
Jedná se o doplnění údajů do buněk , načítání hodnot z buněk ,změna pevně daných hodnot ,vsše řízeno přes formulář vytvořený ve VBA.

Teď co potřebuji, je vhodné a hlavně možné toto celé napsat v html , popřípadě v čem by to bylonejlepší napsat ,tak abych to mohl využít na PC s windows na android zařízeních a na osx.
Ještě doplním ,že vytvořené dokumenty se ukládaji a z formuláře se dají načítat pro prohlédnutí ,popřípadě tisk, nějaké informace se ukládaji do jiného sešitu jako 'databaze' vytvořených kalkulací.
HTML by pro mě byla nejlepší volba vzhledem k tomu že to otevřu kdekoliv na čemkoliv bez řešení multiplatformní aplikace.
Neznám HTML tak dobře abych vyhodnotil jestli toto dokáže, dříve než se do toho pustím.

 
Odpovědět 18.9.2018 19:55
Avatar
Odpovídá na Miroslav
Matěj Strnad:18.9.2018 20:35

Nevím jestli chápu dobře. Ale HTML samo o sobě nic neumí počítat. To by si musel použít např. JavaScript :)

 
Nahoru Odpovědět  +2 18.9.2018 20:35
Avatar
Odpovídá na Miroslav
Andy Scheuchzer:18.9.2018 20:40

HTML+CSS+JS je určitě dobrá volba, je v tom napsané např. VS code.

Editováno 18.9.2018 20:41
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 18.9.2018 20:40
Člověk, co si myslí, že snědl všechnu moudrost světa, i když tomu tak není.
Avatar
Miroslav
Člen
Avatar
Odpovídá na Matěj Strnad
Miroslav:18.9.2018 20:41

Jj to jsem si myslel, teď otázka co je lepší jestli JAVA (JSE nebo JEE) , nebo javascript?

 
Nahoru Odpovědět 18.9.2018 20:41
Avatar
Miroslav
Člen
Avatar
Miroslav:18.9.2018 20:49

Díky moc za rady , nastuduju JS a zkusim to v tom. :-)

 
Nahoru Odpovědět 18.9.2018 20:49
Avatar
Mego
Člen
Avatar
Odpovídá na Miroslav
Mego:19.9.2018 3:58

Java nebo javascript su dve rozdielne veci. Javascript ti na toto postavuje a budes to spustat v prehliadaci, kdezto java je mocny a zbytocne velky nasteoj, ktory potrebuje kompilator a zbytocne sa ti to cele skomplikuje

Nahoru Odpovědět  +1 19.9.2018 3:58
Radšej 15 minút skôr, ako 15 sekúnd neskoro...
Avatar
Miroslav
Člen
Avatar
Odpovídá na Mego
Miroslav:19.9.2018 7:52

Samozřejmně rozdíly mezi Javou a JS znám, ale v Javě už jsem něco dělal, v JS zatím ne , ale utvrdil jsem se v tom , že JS rozhodně jednoduší a plně dostačující pro mou věc.

Díky

 
Nahoru Odpovědět 19.9.2018 7:52
Avatar
Odpovídá na Miroslav
Andy Scheuchzer:19.9.2018 20:27

A ještě jedna skvělá vlastnost: zatímco JS stačí obalit prohlížečem, na spuštění Javy potřebuješ nainstalovanou Javu :-).

Nahoru Odpovědět  +1 19.9.2018 20:27
Člověk, co si myslí, že snědl všechnu moudrost světa, i když tomu tak není.
Avatar
Miroslav
Člen
Avatar
Odpovídá na Andy Scheuchzer
Miroslav:19.9.2018 20:31

Pravda , to mi ani nedošlo, už studuju JS , ale už teď vím , že to určitě bez pomoci nedám

 
Nahoru Odpovědět 19.9.2018 20:31
Avatar
Mego
Člen
Avatar
Odpovídá na Miroslav
Mego:20.9.2018 11:35

To je ok, bo si to napisal takym stylom, akoby si nevedel :-)

Nahoru Odpovědět  +1 20.9.2018 11:35
Radšej 15 minút skôr, ako 15 sekúnd neskoro...
Avatar
Miroslav
Člen
Avatar
Odpovídá na Mego
Miroslav:20.9.2018 12:50

přesně tak :-) , naštěstí mně netíží čas , takže si tak měsíc budu hrát s tutorialama a nesmyslama , abych si to trochu ošahal a pak se do toho pomalu pustím :-)

Každopádně zatím všem moc děkuji ;-)

Editováno 20.9.2018 12:50
 
Nahoru Odpovědět 20.9.2018 12:50
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:3.10.2018 21:48

Je lepsi si hrat s priklady. Treba si najit jednoduchou hru a zkusit v ni neco upravit. Treba piskvorky nebo neco, co ma malo kodu.

V JS se da udelat mnoho, ale jestli tam chces resit neco jako databazi nebo ukladani, mozna bys to mel spis zkombinovat s php a mysql. Ikdyz, to se da take resit castecne pres js...

Mozna ti ulehci praci s elementy pouzivaji jquery (pro vykreslovani na stranku).
Ale da se to resit i bez toho. Staci funkce treba

<script>
function $(id) {return document.getElementById(id);}
alert( $('xyz').value ); // precte input
$('xyz').value = 123; // ulozi do inputu
$('xyz').innerHTML = 123 // ulozi do divu
alert($('xyz').innerHTML)  // precte div

// ruzne zapisy pole
x = [
1, 2, 3
];

x = [
[1, 2, 3],
[1, 2, 3],
];
alert(x[0][2])
for (i=0;i<x.length; i++) alert(y[i][2]) // prochazeni ciselneho pole

y = { // bacha slozene zavorky
abc: [1, 2, 3],
def: [1, 2, 3],
};
alert(y['def'][2])
alert(y.def[2])
for (i in y) alert(y[i][2]) // prochazeni pole s textovymi indexy // pozor y.length nefunguje

x = "1,2,3".split(",") // string na pole
x = [1,2,3].join(",") // pole na string

function zzz(a) {...} // zzz(123);
zzz = function(a) {...} // zzz(123);
y = {};
y.zzz = function(a) {...} // y.zzz(123); // takhle se daji delat jednoduse objekty, namespace
</script>

Nevim, co by se ti jeste mohlo tak hodit. Se zeptej.
Jo, obcas je dobre pouzivat definovani promennych pres var. Kdyz to nepouzijes, snazi se najit promennou v globalnich. Coz muze zpusobit obcas nechtene prepisovani.

Jo, element je treba

<input type=name value=123 id=aaa>

Kdyz ziskas id, tak s nim pracujes jako

elem = document.getElementById('aaa')
elem.value = 123
elem.type = 123
<input type=button value=123 id=aaa onclick="spustFunkci(this,123);" class="123"> // this je odkaz na element, pokud potrebujes z neho data
elem.className = 456 // pro zmenu class, takova zaludnost
Editováno 3.10.2018 21:49
 
Nahoru Odpovědět 3.10.2018 21:48
Avatar
albertpatera
Redaktor
Avatar
Odpovídá na Miroslav
albertpatera:3.10.2018 22:20

Ahoj,

já osobně bych ti doporučil HTML + CSS + PHP + Jquery (JS knihovna) + AJAX (umožňuje "vytáhnout" data z databáze a vložit je do JS ;-)

 
Nahoru Odpovědět 3.10.2018 22:20
Avatar
Šimon Raichl
Překladatel
Avatar
Odpovídá na Peter Mlich
Šimon Raichl:3.10.2018 23:33

Prosim, neuc novacky psat JS rovnou do HTML, je to prasarna, hrozny na debug a neni to skalovatelny, neni dobry je ucit spatnym navykum.

 
Nahoru Odpovědět  +1 3.10.2018 23:33
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na Šimon Raichl
Peter Mlich:4.10.2018 7:45

Nevim, o cem je rec. Jestli jde o ten onclick, tak to naopak povazuji za dobre. Input type button bez onclick nema zadny vyznam (nefunguje) a skryt to do js mi prijde jako spatny zlozvyk pres attachEvent a pod. Takhle primo z html zjistis, co to tlacitko dela.

 
Nahoru Odpovědět 4.10.2018 7:45
Avatar
Šimon Raichl
Překladatel
Avatar
Odpovídá na Peter Mlich
Šimon Raichl:4.10.2018 12:17

Ne, to neni dobre, je proste dobry oddelovat HTML a JS, zvlast chci videt, jak pak budes delat debug u vetsich projektu. Neni problem proste udelat eventListener a dat to do nej, kdyz se naskytne chyba, ci budes chtit neco zmenit v tom skriptu, udelas to mnohem rychleji, nez abys to hledal v kazdym HTML, kde si co dal za funkci.

 
Nahoru Odpovědět 4.10.2018 12:17
Avatar
Honza Bittner
Šupák
Avatar
Odpovídá na Peter Mlich
Honza Bittner:4.10.2018 13:16

Mi přijde, že když bys psal JS do atributů jako onclick při normální web aplikaci, tak to je děsně nepřehledné. Neřekl bych, když bys měl nějaký workflow s web komponentami, které bys rozděloval a tedy by byly oddělené a lehce čitelné, ale při obyčejných statických, nebo i generovaných, webovkách mi to přijde opravdu nečitelné a je lepší to rozdělovat do JS souborů.

Nahoru Odpovědět  +2 4.10.2018 13:16
Milovník Dartu. Student FIT ČVUT. Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/...
Avatar
Šimon Raichl
Překladatel
Avatar
Odpovídá na Honza Bittner
Šimon Raichl:4.10.2018 14:03

Myslim, ze je to vsude necitelny, neprakticky a celkove nepouzitelny, stejne jako vsechny eventy psany k elementum primo do html.

 
Nahoru Odpovědět  -1 4.10.2018 14:03
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na Honza Bittner
Peter Mlich:4.10.2018 19:08

Tak, zhlediska jakesi prehlednosti, cokoliv, co nema moznost fungovat bez js, tak bys v kodu vubec nemel mit a generovat to pomoci js :) A kdyz uz to generuji, tak tam davam kod html tagu a do nej dam onclick. A nebo volim kompromis. Neco jako html template s onclicky a k nemu pribalim js do ext. souboru.
Jako, nemam na to zatim jednotny nazor, proto jsem se zeptal.

 
Nahoru Odpovědět 4.10.2018 19:08
Avatar
Šimon Raichl
Překladatel
Avatar
Odpovídá na Peter Mlich
Šimon Raichl:4.10.2018 21:47

Ale fuj, template s onclicky, to je snad vtip, ne? Co kdyz tech templatu budes mit vic, co kdyz budes mit jedno JS pouzity ve vice templatech a budes chtit neco zmenit? Rikam, tohle neni absolutne skalovatelny, proto se to taky v praxi nedela. Proto vzdy proste chces mit oddeleny ciste HTML a JS.

 
Nahoru Odpovědět 4.10.2018 21:47
Avatar
Odpovídá na Peter Mlich
Vladislav Ladicky:5.10.2018 9:19

Radia ti dobre. Inline JS nemá v moderných stránkach miesto. HTML / CSS / JS prísne oddelené, v samostatných súboroch, ak už nepoužívaš žiadny frontend framework. Ty si bohužiaľ zaseknutý v štýle, a všimol som si, že aj v syntaxe, spred desiatich rokov. To nie je výčitka, to je len upozornenie, že odvtedy sa všeličo zmenilo, a to napríklad zrovna toto. Že prax ukázala, že je chyba používať online JS, v atribútoch.

 
Nahoru Odpovědět 5.10.2018 9:19
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:5.10.2018 12:59

Ok. Zatim o tom budu uvazovat. Starou syntax pouzivam, protoze funguje stejne 30 let bez problemu. Nic novejsi jsem nestudoval.

https://mlich.zam.slu.cz/…tor/edit.htm
https://mlich.zam.slu.cz/…edit-fun.htm
Ted treba hledam chybku v tomto. Druha verze funguje, bold bolduje. Prvni verze nee. Nekde pri prepisovani jsem spachal chybu :)
... Asi tam pise chybny certifikat, tak, az to kolega opravi (2 dny)
No, ale jde mi o to, ze tam mam treba

code_button:"\n"+'<p><input type="button" value="Update html"onclick="SlimWhizzy.func.codeEditClose();"></p>',

Ktere potom pomoci innerHTML vlozim do divu. A je hotovo. Ktdezto v jine casti mam kod puvodniho programu, tam by se muselo navic pridat XX radku ve stylu

vars.butt.forEach(function (item)
        {
        item.addEventListener('click', function ()
                {
                SlimWhizzy.func.processCommand(this);
                });
        });

To mi prijde jako hrube neefektivni. Musi z kodu vycucat linky na elementy a pak k nim teprve prida funkci.

Nebo v jinych kodech generuji primo tag + parametry do stringu, ktery opet pres innerHTML nekam vlozim podle pole. Napr.

pole = {onclick:'SlimWhizzy.func.processCommand(this);'}

. Opet mi to prijde efektivnejsi, nez nasledne pridavat eventy.

Editováno 5.10.2018 12:59
 
Nahoru Odpovědět 5.10.2018 12:59
Avatar
Odpovídá na Peter Mlich
Vladislav Ladicky:5.10.2018 14:37

Po a) nevidím na tých dvoch linkoch nič boldom, obe stránky vyzerajú rovnako. A po b) preto sa to dnes tak už nerobí, že ručne manipuluješ s DOM modelom. Ale cez nejaký JS Framework, ktorý ťa odtieni od potreby upravovať DOM ručne.

 
Nahoru Odpovědět 5.10.2018 14:37
Avatar
Šimon Raichl
Překladatel
Avatar
Odpovídá na Peter Mlich
Šimon Raichl:5.10.2018 15:42

Jinak btw vsiml jsem si, ze nepouzivas na zapis funkci arrow function, vyhodou je, ze je to kratsi, ale je to jen drobnost.

vars.butt.forEach((item) => {
        item.addEventListener('click', () => {
                SlimWhizzy.func.processCommand(this);
                });
        });
 
Nahoru Odpovědět 5.10.2018 15:42
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na Vladislav Ladicky
Peter Mlich:8.10.2018 7:48

Vladislav Ladicky - To je editor. Napises text, oznacis, kliknes na bold a udela se bold. Problem je, ze jeden kod funguje, druhy ne, prikaz document.execute. A zatim jeste nevim proc :)

Šimon Raichl - To treba vidim prvne a nejspis dam prednost starsimu zapisu, ktery je jasnejsi. ta cast je zrovna copy-paste z ciziho kodu. Foreach take neznam. Teda, nejspis jsem to uz v novejsim kodu videl. To ale neznamena, ze nemam predstavu, co to dela :)

 
Nahoru Odpovědět 8.10.2018 7:48
Avatar
Šimon Raichl
Překladatel
Avatar
Odpovídá na Peter Mlich
Šimon Raichl:8.10.2018 9:35

Je to jednoduchy, foreach funguje jako v normalnich jazycich proiteruje pole a clovek pak muze neco udelat s kazdym prvkem.

let objs = [this.content, this.buttons, this.props];
            objs.forEach((obj) => {
                if (obj !== void 0){
                    Object.keys(obj).forEach((key) => {
                        if (typeof obj[key] === "string"){
                            obj[key] = escape(obj[key]);
                        }
                        else{
                            Object.keys(obj[key]).forEach((subkey) => {
                                obj[key][subkey] = escape(obj[key][subkey]);
                            });
                        }
                    });
                }
            });

Jak rikam, je to jenom drobnost, ale precijen pro me je jasnejsi zapisovani funkci pres arrow function.

 
Nahoru Odpovědět 8.10.2018 9:35
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:8.10.2018 10:20

Jo, dik za pomoc s tim js-editorem. Prave jsem to vyresil. Ja pouzivam na tlacitka SPAN. Funguje to jen, kdyz je to odkaz A. Kod je uplne stejny, prikaz document.exec­Command. Ale, kdyz se ta funkce nezavola z odkazu, tak to nefunguje :)
Nebudu uz off-topicovat.
Knihovny pouzivam dost nerad, protoze se neda spolehnout, ze vam do minifikovaneho nebo i normal kodu nekdo neco nepodstrci. A kdo z vas si ten kod realne prochazi pri kazdem updatu?

 
Nahoru Odpovědět 8.10.2018 10:20
Avatar
Miroslav
Člen
Avatar
Miroslav:1.12.2018 21:00

Tak po dvou měsících se vracím s další žádosti o radu, udělal jsem celou aplikaci v HTML+JS s tím že každý ovládací element má samostatný script a data jsem ukládal do. Csv, problém je že jsem do aplikace přidal několik dalších věcí jako zápis z jednání kontaktní informace, stav celého výběrového řízení o zakázce atd, tím se samozřejmě zvětšuje velikost databáze a hlavně problémové výpisy ze souboru. Csv. Momentálně mám přes 4000 záznamu a ovládání je hrozně pomalé. Možná změna je samozřejmě SQL(MySQL), bohužel toto je pro z několika důvodů nepřijatelné, a potřebuji to mít v prenositelnem souboru. Tím se dostávám k jádru, myslíte, že je dobré využít SQLite? Nebo JINÉ řešení.
Data které ukladam: Texty, články, čísla, sumy a přílohy Excel a pdf

Editováno 1.12.2018 21:01
 
Nahoru Odpovědět 1.12.2018 21:00
Avatar
Honza Bittner
Šupák
Avatar
Odpovídá na Andy Scheuchzer
Honza Bittner:2.12.2018 10:29

A ještě jedna skvělá vlastnost: zatímco JS stačí obalit prohlížečem, na spuštění Javy potřebuješ nainstalovanou Javu :-).

To je opravdu strašný popis.

Nahoru Odpovědět 2.12.2018 10:29
Milovník Dartu. Student FIT ČVUT. Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/...
Avatar
Honza Bittner
Šupák
Avatar
Odpovídá na Miroslav
Honza Bittner:2.12.2018 10:30

Jo, SQLite je si myslím v pohodě. Tolik záznamů, abys to musel řešit mít stejně nebudeš. Hmm, nejsem si jist, jak je v dnešní době z HTML+JS only možné se připojovat k DB, ale určitě to nějak půjde. Co se týká dat, které chceš ukládat, tak většinou se soubory (např. to PDF) ukládají mimo a do DB si ukládáš jen cestu k souboru a další raw data (čísla, stringy atp.)

Nahoru Odpovědět 2.12.2018 10:30
Milovník Dartu. Student FIT ČVUT. Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/...
Avatar
Odpovídá na Honza Bittner
Andy Scheuchzer:2.12.2018 10:35

V tom případě mě prosím pouč. Rád se dozvím, jak to popsat co nejlíp.

Nahoru Odpovědět 2.12.2018 10:35
Člověk, co si myslí, že snědl všechnu moudrost světa, i když tomu tak není.
Avatar
Honza Bittner
Šupák
Avatar
Odpovídá na Andy Scheuchzer
Honza Bittner:2.12.2018 12:12

Na spuštění JS potřebuješ interpeter (VM) daného zdrojového kódu, který prohlížeč (v tom smyslu, jak toto slovo známe) obsahuje. Na spuštění Java programu potřebuješ kompilátor, který ti zkompiluje zdrojový kód do bytecode, který je následně interpretován.

JS:

1. napsat zdrojový kód
2-pre. stáhnout prohlížeč
2. interpretovat v prohlížeči

Java:

1. napsat zdrojový kód
2-pre. stáhnout Javu
3. kompilovat Javu
4. interpetovat v VM

Pokud se tedy bavíme o lokálním programu, je jedno, jestli si stáhneš prohlížeč, nebo jestli si stáhneš javu. Jediný rozdíl v používání je ta kompilace do bytecode, což ale u JS mnohdy nahradí kompilace z nějakého frameworku, takže tahle "skvělá vlastnost" je vlastně úplně k ničemu, protože to vyjde na stejno...

JS (jak to vlastně dopadne):

1. napsat zdrojový kód
2-pre. stáhnout prohlížeč
3. zkompilovat do finálního JS
3. interpretovat v prohlížeči


Jen doplním, že teď neposuzuji, co je dostupnější na naučení, vývoj atp., jen popisuji tu tvou "svělou vlastnost", a tedy to, že vlastně na žádné straně v tomto není výhoda. Btw. fun fact: nastavit webpack či další nástroje je občas o dost náročnější než kompilovat javu. :-))

Nahoru Odpovědět  +1 2.12.2018 12:12
Milovník Dartu. Student FIT ČVUT. Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 32 zpráv z 32.