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
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
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.
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.
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.
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.
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í.
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ší?
Č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.
Ú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.
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)
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ý.
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žší.
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.
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?
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?
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.
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í.
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".
Ď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é
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.
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.
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().
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.