RJWEBDESIGN - tvorba webových prezentací

Novinky

22.04.2008
Portál Španělský fotbal byl spuštěn, zatím probíhá testování více

06.03.2008
Pracuji na fotbalovém portálu zabývající se španělským fotbalem

12.01.2008
Dokončen fotbalový rezervační systém Profi Football více

08.01.2008
Spuštění modulu Eshopu pro firmu AZ-SportCzech více

04.01.2008
Dokončena prezentace firmy STRAIGHT CONSULT více


Reklama

Španělský fotbal - spanelskyfotbal.cz

Cizí krmivo


Něco málo o mé osobě

Je mi 26 let, bydlím v hlavním městě ČR. Webdesignem a programováním se zabývám již několik let ... více


Snažím se poradit


Sport, sleduji, hraji


Hlavní Logo

Poslední komentáře

  • nechapem -

    nechapem

  • RJ -

    [131]

    Jak zkopirovat? Vse podstatne mate v clanku, deklaraci funkce a jeji pouziti. Nic vic v tom neni

  • Karel Kaleta -

    Dobrý den, potřeboval bych se zeptat, jestli by jste mi nemohl zkopírovat soubor uložený na vaší adrese http://www.rjwebdesign.net/…ss/index.php a poíslat mejlem. Nevím jak rozjet vaši RSS čtečku a s tímhle to mám jednodušší. Díky za odpověď.

  • RJ -

    [129] To bych nedelal, kdyby zmenili treba razeni men a napr. EURO by se z radku 5 presunulo na radek 8 tak by ti to nevyslo .. zkus to pres to pole, bude to univerzalnejsi

  • kuba -

    [128]jo dík, už jsem to vyřešil, sice ne přes pole, ale trošku kostrbatě přes číslo řádku měny

Statistika

  • Článků celkem: 12
  • Komentářů celkem: 27

Blogspot » PHP » Kurzovní lístek

Kurzovní lístek

Neděle, 13 .Ledna 2008, 10:08, prečteno 481x

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.

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("http://www.cnb.cz/www.cnb.cz/cz/financni_trhy/devizovy_trh/kurzy_devizoveho_trhu/denni_kurz.txt?date=$dnesniDatum");
  $vcera  = $this->ziskejKurz("http://www.cnb.cz/www.cnb.cz/cz/financni_trhy/devizovy_trh/kurzy_devizoveho_trhu/denni_kurz.txt?date=$vcerejsiDatum");


  $finalData = array();
  foreach ($dnes as $zeme => $pole)
  {
    // nastaveni sipky 
    if ($dnes[$zeme][4] > $vcera[$zeme][4])
      $ico = "<img src='up.gif' />";
    elseif  ($dnes[$zeme][4] < $vcera[$zeme][4])
      $ico = "<img src='down.gif' />";
    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") < (time() - $this->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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>Kurzovní lístek</title>
  </head>
  <body>

<?php
  include("kurzy.php");
  echo '<h2>Kurzovní lístek</h2>';
  $k = new Kurzy();
?>
  </body>
</html>

Na ukázku výpisu kurzovního listku se můžete podívat zde

Soubor ke stažení (kurzovni-listek.zip)

Hodnocení: Počet hlasů: 3

Komentáře

kuba [1] -reagovat- 29.03. 17:35 90.183.222.---

ahoj, jak prosímte udělám z toho tvého scriptu aby se mi vypsaly jen některé měny? dík

Roman Janko [2] -reagovat- 31.03. 20:25 78.102.107.---

[1] kuba Snadno, staci si nadefinovat pole men ktere chces zobrazit, a potom to zohlednit v metode ktera bud data ziskava ( ziskas jen ty ktere chces ) nebo ktera je vykresluje …

kuba [3] -reagovat- 01.04. 18:57 90.183.222.---

[2] Roman Jankojo dík, už jsem to vyřešil, sice ne přes pole, ale trošku kostrbatě přes číslo řádku měny

RJ [4] -reagovat- 02.04. 19:30 78.102.107.---

[3] kuba To bych nedelal, kdyby zmenili treba razeni men a napr. EURO by se z radku 5 presunulo na radek 8 tak by ti to nevyslo .. zkus to pres to pole, bude to univerzalnejsi

Přidat komentář

Nový vzkaz

© 2005 - 2008 RJWEBDESIGN, všechna práva vyhrazena.
Nabízíme: Tvorba www stránek
Kontakt: telefony +420 777 856 657 | E-mail: admin@rjwebdesign.net
Spolupracujeme: Aria Studio, MXART Partnerské weby: Pesonline.cz, EuroFotbal.cz, SpanelskyFotbal.cz

© 2008 RJWEBDESIGN