Re: php vypis ze souboru a zformatovani help

From: hynek.lipa <hynek.lipa (zavinac)>
Date: 23. 08. 2005, 16:10 CEST
milan napsal(a):
> nejak se v tom placam, potrebuju dat do php stranek aktualni kurz CNB,
> nasel jsem si, kde je ulozen v txt podobe, ale nejak ho nemuzu 
> zformatovat a vypsat kam mam, zatim jsem spachal toto:
> <? $fd = fopen ("http://wdb.cnb.cz/CNB_TXT/KURZY.K_CURRTXT", "r");
> while (!feof ($fd)) {
>    $buffer = fgets($fd, 4096);
>     echo $buffer;
>         }
> fclose ($fd); ?>
> to sice nacte ten kurzovni listek a nacpe ho do "mych" stranek, ale 
> absolutne nezformatovany a ja bych z toho potreboval udìlat klasickou 
> html tabulku, mozna by nebylo spatny  vypsat jen nektery radky /vynechat 
> jeny a jiny asijsky platidla /, googloval jsem a experimentoval, ale 
> nejak se mi proste nedari, nebo kdyby jste vedeli o nejakem jinem 
> zpusobu jak to provest uvitam vschno :)  predem dik
---------------------------------------------------------

tohle jsem resil nekdy pred rokem, jen s tim rozdilem, ze se to zpracuje 
jednou denne a ulozi do DB, odkud se to dalsich 24 hodin vypisuje.

kdyz si to upravis (cti odstranis sql a misto nej das html) tak dostanes 
presne to co chces (mozna ;) )


snad se to nikde blbe nezalomi ;)


<?php

$fd = fopen ("http://wdb.cnb.cz/CNB_TXT/KURZY.K_CURRTXT", "r");

/*
  zpracujeme data do vysledneho pole s formatem:
(
     [1] => Array
         (
             [0] => zeme
             [1] => mena
             [2] => mnozstvi
             [3] => kod
             [4] => kurz
)
... data ...
*/

$i = 0;
while (FALSE == @feof ($fd))
{
     $buffer = @fgets($fd, 4096);
     if (TRUE == $buffer)
     {
         $data[$i] = explode("|", $buffer);
     }
   $i++;
}
fclose ($fd);
// konec zpracovani dat


/*
z formatu
***
     [0] => Array
         (
             [0] => 17.12.2004  #245
         )
***
ziskame aktualni datum vydani kurzovniho listku
*/
$datum = explode("#", $data[0][0]);
$tmp_datum = explode(".", $datum[0]);

// datum ve formatu yyyy-mm-dd
$for_unix_date = trim($tmp_datum[2]) .'-'. trim($tmp_datum[1]) .'-'. 
trim($tmp_datum[0]);




// odstraneni prvni (datum) a druhe (nazev sloupcu) polozky
unset($data[0]);
unset($data[1]);

//zpracovavane zaznamy
$current_record = array('EUR','JPY','SKK','USD','GBP',);



// priprava dotazu UPDATE na tabulku s menami
// zaciname az od cisla 2
$result = true;
$i = 2;
while (TRUE == is_array($data[$i]))
{
   // zapiseme jen ty polozky, ktere jsou v poli $current_record
   if (TRUE == in_array($data[$i][3], $current_record))
   {

     $sql = '
             UPDATE
                 `kurzy_men`
             SET
                 `write` = NOW(),
                 `datum` = UNIX_TIMESTAMP(\''. $for_unix_date .'\'),
                 `zeme` = \''. addslashes(trim($data[$i][0])) .'\',
                 `mena` = \''. addslashes(trim($data[$i][1])) .'\',
                 `mnozstvi` = \''. addslashes(trim($data[$i][2])) .'\',
                 `kod` = \''. addslashes(trim($data[$i][3])) .'\',
                 `kurz` = \''. addslashes(trim($data[$i][4])) .'\'
             WHERE
                 `kod` = \''. addslashes(trim($data[$i][3])) .'\'
             LIMIT
                 1';

     $query = ''// ulozeni do db;


   }

   $i++;
} // end: while

?>



enjoy ;)

-h!-
Received on Tue, 23 Aug 2005 16:10:10 +0200

This archive was generated by hypermail 2.1.8 : 23. 08. 2005, 16:12 CEST