Publikováno v sekci PHP v
Pokud potřebujete mít na svých webových stránkách aktuální kurzovní lístek, není nic snažšího než si přečíst tento článek.
K získání kurzovního lístku použijeme textový výpis České národní banky. Kurzovní lístek stáhneme dvakrát. Jednou za dnešní datum, podruhé za včerejší. Porovnáme rozdíl kurzů a pak jej přehledně vypíšeme do tabulky. Abychom tuto akci neprováděli zbytečně po každém obnovení stránky, tak si data kešujeme do souboru.
1: class Kurzy { var $kesLimit = 3600; // 1 hodina function Kurzy() { echo $this->spust(); } function spust() { $this->kesovat(); } function ziskejKurz($url) { $soubor = file($url); $i = 0; $kurzPole = array(); foreach ($soubor as $row) { $i++; if ($i > 2) { $row = trim($row); list($zeme, $mena, $mnozstvi, $kod, $kurz) = explode("|", $row); $kurzPole[$zeme] = array($zeme, $mena, $mnozstvi, $kod, $kurz); } } return $kurzPole; } function porovnejData() { $dnesniDatum = date("d.m.Y"); $vcerejsiDatum = date("d.m.Y", mktime (0,0,0, date("m"), date("d") - 3,date("Y"))); $dnes = $this->ziskejKurz("<a href="http://www.cnb.cz/www.cnb.cz/cz/financni_trhy/devizovy_trh/kurzy_devizoveho_trhu/denni_kurz.txt?date=$dnesniDatum">http://www.cnb.cz/www.cnb.cz/cz/financni_trhy/devizovy_trh/kurzy_devizoveho_trhu/denni_kurz.txt?date=$dnesniDatum</a>"); $vcera = $this->ziskejKurz("<a href="http://www.cnb.cz/www.cnb.cz/cz/financni_trhy/devizovy_trh/kurzy_devizoveho_trhu/denni_kurz.txt?date=$vcerejsiDatum">http://www.cnb.cz/www.cnb.cz/cz/financni_trhy/devizovy_trh/kurzy_devizoveho_trhu/denni_kurz.txt?date=$vcerejsiDatum</a>"); $finalData = array(); foreach ($dnes as $zeme => $pole) { // nastaveni sipky if ($dnes[$zeme][4] > $vcera[$zeme][4]) $ico = "<img src="up.gif" alt="" />"; elseif ($dnes[$zeme][4] "; else $ico = ""; // vypocet ceny a pretypovani $cenaDnes = (double)str_replace(",", ".", $dnes[$zeme][4]); $cenaVcera = (double)str_replace(",", ".", $vcera[$zeme][4]); $rozdil = $cenaDnes - $cenaVcera; //země|měna|množství|kód|kurz // finalni ulozeni rozdilovych dat $finalData[$dnes[$zeme][0]] = array( "zeme" => $dnes[$zeme][0], "mena" => $dnes[$zeme][1], "mnozstvi" => $dnes[$zeme][2], "kod" => $dnes[$zeme][3], "kurz" => $dnes[$zeme][4], "sipka" => $ico, "rozdil" => $rozdil ); } return $finalData; } function vykreslitTabulku() { $table = "<table border="1">"; $table .= "<tr><th>Země</th><th>Měna</th><th>Množství</th><th>Kód</th><th>Kurz</th><th>Ico</th><th>Rozdíl</th></tr> "; foreach ($pole = $this->porovnejData() as $klic => $index) { $table .= "<tr><td>".$pole[$klic]["zeme"]."</td><td>".$pole[$klic]["mena"]."</td><td>".$pole[$klic]["mnozstvi"]."</td><td>".$pole[$klic]["kod"]."</td><td>".$pole[$klic]["kurz"]."</td><td>".$pole[$klic]["sipka"]."</td><td>".$pole[$klic]["rozdil"]."</td></tr> "; } $table .= "</table>"; return $table; } function kesovat() { if (!is_file("kurzovni-listek.html") or fileMtime("kurzovni-listek.html") kesLimit)) { $file = fopen("kurzovni-listek.html", "w+"); fwrite($file, $this->vykreslitTabulku()); fclose($file); readfile("kurzovni-listek.html"); } else { readfile("kurzovni-listek.html"); } }Mno a třídu použijeme takto
1: <meta content="text/html; charset=UTF-8" http-equiv="content-type"></meta><title>Kurzovní lístek</title><?php include("kurzy.php"); 2: echo '<h2?> 3: Kurzovní lístek'; $k = new Kurzy(); ?>Na ukázku výpisu kurzovního listku se můžete podívat zde
[link]kurzovni-listek.zip[/link]