Avatar
samo007
Redaktor
Avatar
samo007:

Ahoj, mam jednu otázku. Ako vložím jednotlivé texty do premennej v javaskripte zo súboru TXT?

Ide o akési aktuality na celý týždeň, ktoré by sa menili podľa dňa (najbližšie sviatky).
Hľadal som ten kód, ale všade sa popisuje všetko možné, ale nie to, ako vložiť text z iného súboru.

Potrebujem ale ešte aj filter na výber textu podľa dátumu. S tým by som nemal problém, keby som ale vedel ako nastaviť, aby aplikácia vedela, o ktorý deň ide...

TXT by mohol vyzerať asi takto:

5.7. Sv. Cyril a Metod
15.8. Nanebovzatie Panny Márie
 
Odpovědět 15.10.2012 22:19
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na samo007
Drahomír Hanák:

V klasickém JavaScriptu tohle nejspíš nepůjde udělat. Je to z důvodu bezpečnosti. Napadá mě akorát možnost, načíst si ten text AJAXem nebo si ho prostě předat nějakým serverovým jazykem (třeba PHP). Můžeš to zkombinovat - AJAXem načítat serverový skript ;) Taky lze použít serverový javascript s pomocí node.js

 
Nahoru Odpovědět 15.10.2012 22:26
Avatar
Kit
Redaktor
Avatar
Odpovídá na samo007
Kit:

A jsme opět u databází...

Javascript na tohle nedoporučuji kvůli indexování ve vyhledávačích.

Nahoru Odpovědět 15.10.2012 22:41
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
samo007
Redaktor
Avatar
Odpovídá na Drahomír Hanák
samo007:

Ďakujem. Takže bez problémov skombinujem to PHP a Javascrip?

 
Nahoru Odpovědět 15.10.2012 22:50
Avatar
samo007
Redaktor
Avatar
Odpovídá na Kit
samo007:

OK, ale momentálne nemám prístup k databáze tej stránky.
Mysql tiež neovládam, takže neviem ako to vyriešiť.

 
Nahoru Odpovědět 15.10.2012 22:52
Avatar
Kit
Redaktor
Avatar
Odpovídá na samo007
Kit:

Kde je PHP5, tam je i databáze. Na každém webhostingu jich bývá asi 6 druhů. Stačí si jen vybrat.

Javascript do toho raději nemíchej.

Nahoru Odpovědět 15.10.2012 23:04
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
samo007
Redaktor
Avatar
Odpovídá na Kit
samo007:

Je tam databáza, skle nemám k nej prístup. Nieje to totiž moja stránka, ktorú programujem.

 
Nahoru Odpovědět 16.10.2012 11:36
Avatar
Kit
Redaktor
Avatar
Odpovídá na samo007
Kit:

Tak použij databázi SQLite, k té budeš mít přístup. Umí toho víc a je rychlejší.

Nahoru Odpovědět 16.10.2012 13:20
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
samo007
Redaktor
Avatar
Odpovídá na Kit
samo007:

Neviem pracovať so SQLite, dúfam, že tu je na to návod. Ďalej, skúsim niečo vymyslieť :)

Editováno 16.10.2012 15:24
 
Nahoru Odpovědět 16.10.2012 15:23
Avatar
samo007
Redaktor
Avatar
Odpovídá na Kit
samo007:

Práve som si prešiel tvoj návod INIFILE. Mne totiž bude stačiť toto.
Myslíš, že by som to mohol využiť?

 
Nahoru Odpovědět 16.10.2012 15:48
Avatar
samo007
Redaktor
Avatar
Odpovídá na Kit
samo007:

Práve som si prešiel tvoj návod INIFILE. Mne totiž bude stačiť toto.
Myslíš, že by som to mohol použiť?

 
Nahoru Odpovědět 16.10.2012 15:49
Avatar
Kit
Redaktor
Avatar
Odpovídá na samo007
Kit:

Můžeš. Dokonce to byla druhá databáze, kterou jsem ti pro zmíněný účel chtěl navrhnout. Těch záznamů by však nemělo být víc než několik set kvůli výkonu. Předpokládám, že to bude splněno.

Asi ti však časem budou chybět pokročilejší databázové funkce, např. vyhledávání nebo řazení.

Pro uživatele, kteří neznají nic jiného než "SELECT * FROM TABULKA", je to však výborná alternativa.

Editováno 16.10.2012 16:24
Nahoru Odpovědět 16.10.2012 16:20
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na samo007
David Čápka:

Zase vybíráš špatný nástroj, je jen otázkou času, než zjistíš, že v tom něco nejde a budeš se nás ptát, jak to vyřešit. Vezmi si prostě databázi. Chystám se zde udělat seriál pro MySQL, možná dnes již něco přibude, uvidím, jak mi to půjde.

Nahoru Odpovědět 16.10.2012 17:18
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Pokud by sis to přečetl pozorněji, tak samo007 nemá přístup k MySQL. Proto jsem mu navrhl SQLite, které je pro tento účel mnohem vhodnější než MySQL a bývá všude tam, kde je PHP5.

Nahoru Odpovědět 16.10.2012 18:10
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

To je zas nějaká hloupost. MySQL tam je a je to ta nejjednodušší a nejpoužívanější cesta, jak na webu uložit data. Pokud neví údaje, ať si je zjistí, jinak nemá smysl něco dělat. Pokud je neví ani ten, kdo by je měl vědět, je otázka, jestli s tím má smysl ztrácet čas, protože takový projekt je evidentně k ničemu.

Nahoru Odpovědět 16.10.2012 18:22
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Proč všichni protežují MySQL před SQLite? Vždyť MySQL se pro webové aplikace nehodí.

Nahoru Odpovědět 16.10.2012 18:38
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Nehodí, ale používá se pro ně, já jsem to nevymyslel :) Přijde mi lepší, když si nejprve zkusí mainstream a poté něco jiného, stejně kamkoli přijde, tam bude pravděpodobně MySQL, je dobré si osahat právě tu. Já ale narážím hlavně na to, že nemá ty údaje, to mi přijde zavádějící.

Nahoru Odpovědět 16.10.2012 18:45
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Mainstream neboli se stádem. Takovou odpověď jsem očekával. Kamkoli přijde, bude nejen MySQL, ale i SQLite a další 4 databáze. Proč tedy nezvolit tu lepší?

Nahoru Odpovědět 16.10.2012 18:59
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Člověk by měl začínat se stádem, než se rozhodne jít po svém. Je to jednodušší a nevidím na tom nic špatného. Beru mainstream jako základní znalost, kterou by měl programátor mít. Když poté dosáhne úrovně, kdy zjistí, že mu něco nevyhovuje, tím lépe. Ale určitě by se neměl učit něco jiného, když nezkusil to, co používá to stádo.

Nahoru Odpovědět 16.10.2012 19:06
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Jak krutě a bolestně zní tvá pravda :(

Na druhé straně databáze SQLite patří mezi nejpoužívanější databáze vůbec. Možná o tom jenom nevíš.

Nahoru Odpovědět 16.10.2012 19:33
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
samo007
Redaktor
Avatar
Odpovídá na David Čápka
samo007:

Údaje by som si mohol k MYSQL zohnať, ale je to zdĺhavá cesta a vysvetliť to je tiež zdĺhavé.
Asi využijem na začiatok INIFILE, pretože sa mi zdá jednoduchý a podobné niečo som skúšal v Gamemakeru a potrebujem sa naučiť úplný základ (moje znalosti= 0). Potom prejdem na iné databázy.

 
Nahoru Odpovědět 16.10.2012 19:36
Avatar
samo007
Redaktor
Avatar
Odpovídá na Kit
samo007:

V tomto prípade nebudem potrebovať nič iné ako INIFILE a všetko čo poskytuje, mi postačí.
Zámerne potrebujem niečo takéto jednoduché. Viem prečo to robím. Ja si myslím, že dobré bude pre mňa začať s tým INIFILE, pretože sa potrebujem naučiť aj vytvoriť obyčajné spojenie.

David Čápka: Veď človek by sa mal začať učiť najprv niečo jednoduché a az potom ísť ďalej. Znie to akoby si vravel, že najprv sa treba naučiť binárny kód a až potom iné odvodené kódy (len ako príklad)

 
Nahoru Odpovědět 16.10.2012 19:43
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na samo007
David Čápka:

Ano a databáze jsou extrémně jednoduché, jen o tom nevíš. Ale evidentně máš svou hlavu, jen jsem ti chtěl ušetřit práci, až zas budeš vymýšlet jak něco udělat v nástroji, který pro to není určěný.

Nahoru Odpovědět 16.10.2012 19:46
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na samo007
Kit:

Když se podíváš třeba na
http://www.itnetwork.cz/…-a-modularne
tak po změně jednoho řádku pro otvírání databáze to můžeš použít i pro SQLite.

Nahoru Odpovědět 16.10.2012 19:47
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
samo007
Redaktor
Avatar
samo007:

Ďakujem za rady, vážim si to :)

 
Nahoru Odpovědět 16.10.2012 19:52
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Tomu bych i věřil, je to dobrá databáze a určitě ji používá hodně aplikací. Trochu mi tato situace připomíná Ruby on Rails na naší škole. Zatímco ti pokročilí, co přišli od PHP a MySQL (bylo tam Ruby a SQLite) si mnuli ruce a jásali, v čem je to lepší, začátečníkům to vůbec nic nedalo a měli problémy někam nahrát funkční web. To proto, že k tomu bylo potřeba více hledání a zjišťování, než kdyby se u nás učilo PHPčko, co se jen plácne na FTP a běží to. S SQLite jsem nikdy nedělal (kromě ROR), ale třeba u freehostingů jsem zahlédl vždy jen nastavení k MySQL. To samé jsou pak tutoriály, kde k PDO potřebuješ umět objekty. Nabastlit něco v MySQL mi přijde pro člověka co to nikdy neviděl snažší.

Nahoru Odpovědět 16.10.2012 19:54
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Zrovna aktuality bych do INIFILE také nedával. INIFILE je určeno spíš pro neměnná data nevelkého rozsahu a hodí se pro implementaci slovníku. Aktuality nejsou slovník.

Nahoru Odpovědět 16.10.2012 19:54
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

"k PDO potřebuješ umět objekty" :)

Jak libě zní tato hudba k mým uším. Spousta vývojářů se modlí ke svatému grálu jménem ORM a tady ho mají u nosu.

SQLite má i ovladač podobný ovladači MySQL, ale nepropaguji ho, protože je zastaralý. Nicméně je stejně funkční a stejně použitelný jako ovladač MySQL. Budoucnost má PDO a to pro obě databáze.

PDO se dá používat i v neobjektovém prostředí, ale nějak se mi zatím nechtělo na to psát tutoriál. Myslíš si, že to má význam?

Nahoru Odpovědět 16.10.2012 20:05
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Myslím, že by to mělo obrovský význam, sám jsem teď v PDO dělal něco pro ten Tetris (teď si s tím chvíli dávám pauzu) a nebylo to úplně jednoduché. Chtěl jsem to neobjektové a co nejkratší, jen do 2 skritpů. Hned jsem narazil na problém, prý když to nedám do výjimky, tak se mi v chybě vypíše heslo. Možná to jde vypnout v nastavení, raději jsem tam dal tu výjimku. Připojení mám v obou souborech, nevěděl jsem, jak to nasdílet a dělat nějaký statický obal se mi pro tak malý účel nechtělo.

V MySQL jsme v původním Islandsoftu pracovali takto:

require('pripoj.php');
mysql_query('dotaz');

Vůbec nic jiného jsme neřešili a bylo to opravdu jednoduché. Vlastně ani nevím, jestli to takhle jde v MySQLi, protože tam se již možná musí předávat spojení při volání mysqli_query.

Jak lze PDO použít neobjektově, když mám třeba index.php a do něj vložím menu.php, paticka.php a clanek.php jen pomocí require?

Nahoru Odpovědět 16.10.2012 20:11
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Tak nevím, jestli jsem nepřecenil své schopnosti. Úplně procedurálně bych to asi nezvládl, s objekty je to mnohem jednodušší. Tvůj kompromis mohl být dobrou volbou.

"mám třeba index.php a do něj vložím menu.php, paticka.php a clanek.php ..."

Uh. To všecho includuješ? Já to všechno dávám do jedné šablony, abych měl celou stránku hezky pohromadě a také abych si za všech okolností zachoval validitu výstupu.

Editováno 16.10.2012 20:30
Nahoru Odpovědět 16.10.2012 20:29
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

No tady máme MVCčko, ale ten starý web takhle fungoval. Zezačátku to bylo docela přínosné, protože jsme PHP neuměli a bylo to jednoduché, samozřejmě jakmile měl ten projekt pár set řádků, tak je to nepoužitelné. Ale na první web myslím ideální způsob.

Chtěl bych udělat něco, kde by se prostě napsalo na začátek skriptu připoj (nemuselo se do každého zadávat heslo) a poté se volaly procedurálně dotazy bez ohledu na nějaký kontext připojení.

Nahoru Odpovědět 16.10.2012 21:11
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
samo007
Redaktor
Avatar
samo007:

Ešte by som sa chcel spýtať, že čo je to PDO

 
Nahoru Odpovědět 16.10.2012 22:03
Avatar
Kit
Redaktor
Avatar
Odpovídá na samo007
Kit:

PDO je objektový ovladač databází, který je součástí PHP. Velmi užitečný, ale jen pro ty, kteří se nebrání objektovému programování.

Nahoru Odpovědět 16.10.2012 22:11
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
 
Nahoru Odpovědět 16.10.2012 22:12
Avatar
samo007
Redaktor
Avatar
samo007:

Aha, už rozumiem. Ale budem potrebovať presnejší návod a vysvetliť každý kúsok kódu.

Editováno 17.10.2012 8:16
 
Nahoru Odpovědět 17.10.2012 8:15
Avatar
Kit
Redaktor
Avatar
Odpovídá na samo007
Kit:

Myslel jsem si, že návody, na které tě odkázal Drahomír Hanák, jsou dostatečně detailní. Také nevím vše, ale většinu problémů vyřeší googlovský dotaz "PHP PDO".

Nahoru Odpovědět 17.10.2012 9:16
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
samo007
Redaktor
Avatar
Odpovídá na Kit
samo007:

Ďakujem, skúsim to. Ale teraz zatiaľ použijem INIFILES. To sa na ten kalendár celkom hodí. Údaje neplánujem meniť. Postupne ich budem pridávať, ale potom to tak ostane, pretože sviatky sa nemenia a na ďalší rok budú rovnaké :)

 
Nahoru Odpovědět 17.10.2012 9:44
Avatar
Kit
Redaktor
Avatar
Odpovídá na samo007
Kit:

INIFILE se hodí na úložiště typu key-value. Jenže tady klíč nemáš, protože k některému datu můžeš mít víc událostí. To se už může hodit lépe CSV.

Nahoru Odpovědět 17.10.2012 10:00
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
samo007
Redaktor
Avatar
 
Nahoru Odpovědět 17.10.2012 23:09
Avatar
Kit
Redaktor
Avatar
Odpovídá na samo007
Kit:

CSV je zkratka pro Comma Separated Values neboli hodnoty oddělené čárkami. Je to velmi jednoduchý formát dat používaný i jako vnitřní formát MySQL. Na každé řádce tabulky jsou hodnoty sloupců odděleny čárkami, příp. jiným oddělovačem.

Často se v tomto formátu dají stáhnout např. výpisy z banky.

Nahoru Odpovědět 17.10.2012 23:20
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
samo007
Redaktor
Avatar
Odpovídá na Kit
samo007:

Ano, niečo som o tom dávnejšie čítal (nevedel som, že sa to volá CSV), ale neviem ako sa to prakticky používa. Napr. aká je koncovka súboru a ako sa volajú hodnoty.

 
Nahoru Odpovědět 18.10.2012 7:25
Avatar
Kit
Redaktor
Avatar
Odpovídá na samo007
Kit:

Přípona bývá kupodivu "csv", ale není to striktně dáno. Běžně se to edituje přímo editorem, dá se to naimportovat do tabulkového procesoru, obvykle funguje i export. Ukládají se do toho čísla a krátké texty. Řetězec obsahující oddělovač musí být v uvozovkách.

V PHP jsou pro práci s CSV vhodné funkce fgetcsv() a fputcsv().

Pokud bys v textu neměl čárky, tak by to ve tvém případě vypadalo asi takto:

5.7., Sv. Cyril a Metod
15.8., Nanebovzatie Panny Márie

Pokud bys chtěl použít původní formát, tak pro čtení můžeš použít funkce file() a explode().

Nahoru Odpovědět 18.10.2012 9:33
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
samo007
Redaktor
Avatar
Odpovídá na Kit
samo007:

Ďakujem
A čo tak použiť obyčajný TXT? Niekde mám zapísanú funkciu s niečím ako open list či ako. To si už nájdem...

 
Nahoru Odpovědět 18.10.2012 10:37
Avatar
Kit
Redaktor
Avatar
Odpovídá na samo007
Kit:

Však jsem napsal, že máš použít funkci file(). Načte ti celý soubor do pole, řádek po řádku.

Nahoru Odpovědět 18.10.2012 10:52
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
samo007
Redaktor
Avatar
Odpovídá na Kit
samo007:

Veď ano, ale ja som mal namysli iný spôsob. Ale neviem si spomenúť, ako sa to volá.

 
Nahoru Odpovědět 18.10.2012 13:13
Avatar
Kit
Redaktor
Avatar
Odpovídá na samo007
Kit:

Ty bys chtěl ta data načítat cyklem?

Nahoru Odpovědět 18.10.2012 13:21
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
samo007
Redaktor
Avatar
 
Nahoru Odpovědět 18.10.2012 13:27
Avatar
Kit
Redaktor
Avatar
Odpovídá na samo007
Kit:

A proč, když to můžeš udělat zavoláním jedné funkce?

Nahoru Odpovědět 18.10.2012 13:28
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
samo007
Redaktor
Avatar
Avatar
Kit
Redaktor
Avatar
Odpovídá na samo007
Kit:

Však jsem psal. Zavoláš funkci file(), která ten soubor načte do pole. Proč to musím opakovat?

Nahoru Odpovědět 18.10.2012 13:57
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
samo007
Redaktor
Avatar
Odpovídá na Kit
samo007:

Ale nie. Teraz nemyslím 'file()', ale to ako to z toho 'file()' dostanem tie hodnoty.

 
Nahoru Odpovědět 18.10.2012 14:53
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 51 zpráv z 51.