Digital Moments este partenerul ideal pentru afacerea ta!
Inscrie-te la Feed: Stiri

Curs valutar – script php

20 octombrie 2009 | 0 comentarii | Categoria Php |

Urmatorul script preia datele de curs valutar de la BNR si le afiseaza pe site-ul dvs.

<?php
 /**
 * @author Ionut Mantescu
 * @email ionut@digitalmoments.ro
 * @company DM Design - a Digital Moments solution
 * @website www.dmdesign.ro
 * @copyright 2007 - 2009
 *
 * cerinte script
 *
 * fopen activ pe server
 * xml activ pe server
 * fisierul specificat in $file_cache sa fie setat CHMOD pentru scriere (664)
 *
 */

error_reporting(E_ALL);

// setare variabile de mediu
$contor            = 0;
$taguri            = array();
$stare            = '';
$fisier_bnr        = "http://www.bnro.ro/nbrfxrates.xml";
$fisier_cache    = "cursvalutar.xml";

// daca fisierul de cache e prea vechi se regenereaza
if ( (! file_exists($fisier_cache)) || (filesize($fisier_cache) == 0) || (time()-filemtime($fisier_cache) > 3600) )
{
 $stuff = file($fisier_bnr);
 $fh = fopen($fisier_cache,"w");
 foreach ($stuff as $line) { fputs($fh,$line); }
 fclose ($fh);
 $xld = "Cursul a fost luat de la BNR";
}
else
 $xld = "Cursul a fost luat din cache"; 

// se seteaza functiile de lucru pentru parsarea xml-ului
function startElement($parser, $name, $attrs)
{
 global $contor, $taguri, $stare;

 $taguri[$contor]['nume'] = $name;
 $taguri[$contor]['atribute'] = $attrs;
}

function endElement($parser, $name)
{
 global $contor, $taguri, $stare;

 $stare = '';
 $contor++;
}

function characterData($parser, $data)
{
 global $contor, $taguri, $stare;

 $taguri[$contor]['info'] = $data;
 if (!$stare) {return;}
}

// se parseaza xml-ul si se citesc randurile din el
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!($fp = fopen($fisier_cache, "r")))
 die("Nu a putut fi citit fisierul XML din cache");

while ($data = fread($fp, 4096))
{
 if (!xml_parse($xml_parser, $data, feof($fp)))
 {
 die(sprintf("Eroare XML: %s la randul %d",
 xml_error_string(xml_get_error_code($xml_parser)),
 xml_get_current_line_number($xml_parser)));
 }
}
xml_parser_free($xml_parser);

// se seteaza valorile pentru fiecare moneda
for ($i=0;$i<$contor; $i++)
{
 if ( isset($taguri[$i]['nume']) )
 if ($taguri[$i]['nume'] == 'SENDINGDATE')
 $data_curs = $taguri[$i]['info']; // se preia data specificata in xml

 if ( isset($taguri[$i]['atribute']['CURRENCY']) )
 $exchrate[$taguri[$i]['atribute']['CURRENCY']] = $taguri[$i]['info']; // se preia valoarea pentru fiecare moneda

 //if ($taguri[$i]['atribute']['CURRENCY'] == 'EUR')
 //echo '<br />EURO: '.$taguri[$i]['info'];

 //if ($taguri[$i]['atribute']['CURRENCY'] == 'USD')
 //echo '<br />USD: '.$taguri[$i]['info'];

 //echo $i.' - '.var_export($taguri[$i], true)."<br />"; // se afiseaza toate tagurile si valorile gasite
}

// se afiseaza cursurile pe care le dorim
echo '<br />Curs valutar din data: '.$data_curs;
echo '<br />Euro: '.$exchrate['EUR'];
echo '<br />USD: '.$exchrate['USD'];
echo '<br />'.$xld;
?>

URL scurt catre acest articol: http://tinyurl.com/2aqnr93

Distribuie pe Facebook
Lasa un comentariu 836 vizualizari, 1 pana acum azi |

Iti place articolul? Ajuta-ne sa-l promovam..

Lasa un comentariu


*