Autor Zpráva
jaacob
Profil *
Zdravím vás, potřeboval bych poradit, jak postupovat. Mým cílem je získat ze stránek ČNB aktuální kurz EURa.
Zkoušel jsem to z penize.cz, tam je to řešitelné zbytečně složitě a taky z kurzy.cz, ale to fungovalo dočasně, netuším proč, kurz eura byl na druhý den prázdný a měl styl display:none;
Na co bych si měl v případě ČNB dát pozor a jaké funkce použít, jestliže potřebuju obnovit hodnotu při načtení dokumentu vždy znovu a nepoužívat pro to databázi? Díky za jakoukoliv nápovědu.


Aha, jak se tak dívám, tak EUR k nenalezení :-) Co tedy s tím?
Bubák
Profil
jaacob:
Aha, jak se tak dívám, tak EUR k nenalezení :-) Co tedy s tím?
To máš kurzy ostatních měn, musíš se podívat na kurzy devizového trhu.
Zřejmě ti pomůže i http://jecas.cz/ziskani-obsahu-cache, ať nemusíš při každém požadavku stahovat kurzovní lístek ze stránek ČNB.
juriad
Profil
A ještě lépe používat tento soubor (stahovat cronem jednom za den):
http://www.cnb.cz/cs/financni_trhy/devizovy_trh/kurzy_devizoveho_trhu/denni_kurz.txt
jaacob
Profil *
Bubák
Díky, cache by nebyl problém...

juriad:
...pokud ale mluvíme o cronu, zatím jsem neměl tu čest, ale třeba je na čase. Takže taky díky za nasměrování
Aplikace je pro lokální využití a bude ji používat jediný uživatel. Dejme tomu teda, že soubor .txt lokálně uložím, jak přesně z něj můžu vyhledat hodnotu? Jakou funkcí?


nebo spíš funkcemi


Samozřejmě jsem se to snažil najít, než jsem se zeptal....
juriad
Profil
# pokud máš ten soubor stažený, tak adresu změň jen na název souboru
$radky = file('http://www.cnb.cz/cs/financni_trhy/devizovy_trh/kurzy_devizoveho_trhu/denni_kurz.txt');
$kurzy = array();

for ($i = 2; $i < count($radky); $i++) {
        $radek = $radky[$i];
        list($zeme, $mena, $mnozstvi, $kod, $kurz) = explode('|', $radek);
        $kurz = strtr($kurz, ',', '.') / $mnozstvi;
        $kurzy[$kod] = array('zeme' => $zeme, 'mena' => $mena, 'kod' => $kod, 'kurz' => $kurz);
}

var_dump($kurzy);

$hodnota = 100; # Kč
echo "$hodnota Kč je " . ($hodnota / $kurzy['EUR']['kurz']) . " v Eurech\n";


Pokud tu hodnotu chceš v JS, tak:
<script>
<?php
echo 'var kurzy = ' . json_encode($kurzy) . ';';
?>
</script>

A pak v JS s tím budeš pracovat již normálně:
var kurzEura = kurzy.EUR.kurz;
// nebo ekvivalentně
var kurzEura = kurzy['EUR']['kurz'];

Samozřejmě, že bys mohl vyfiltrovat jen měnu či měny, které tě zajímají, ale to je již na tvém uvážení.
jaacob
Profil *
juriad:
Jo, takže s PHP. Mockrát díky juriade za pomoc! Řešení jsem nečekal.


jaacob:
A i takhle, no ty jsi perfektní! :) Ještě jednou díky

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: