Curs valutar bnr pe site-ul tau

(2 voturi, media 5.00 din 5)
Loading ... Loading ...
Programare php Mysql Autor: knion
Pareri si pareri Printeaza aceast articol

O problema de care se loveste oricine, cei care presteaza cod , pagini web, un simplu
script iti poate usura munca. Nu demult BNR (de prin 2007) a venit in sprijinul programatorilor punand la dispozitie cursul valutar intr-un fisier de tip xml din care se poate citi orice curs ai nevoie.
Iata un exemplu pentru cursul EUR, USD, LIRA STERLINA si GRAMUL DE AUR :
——————————————-

<?php
$objDOM = new DOMDocument();
$objDOM->load("http://www.bnro.ro/nbrfxrates.xml");
$cursuri = $objDOM->getElementsByTagName("Rate");
$data=$objDOM->getElementsByTagName("SendingDate")->item(0)->nodeValue;
list($year, $month, $day) = split('[-.-]', $data);
$data=$day.'.'.$month.'.'.$year;

$eur=$cursuri->item(10)->nodeValue;
$usd=$cursuri->item(26)->nodeValue;
$gbp=$cursuri->item(11)->nodeValue;
$xau=$cursuri->item(27)->nodeValue;
$chf=$cursuri->item(5)->nodeValue;
$pln=$cursuri->item(20)->nodeValue;
?>
<table width="159" border="0" cellpadding="0" cellspacing="3">
<tr>
<td width="34"><img src="http://www.bnr.ro/img/valute/eur.gif" title="Curs EURO" alt="Curs EURO"/></td>
<td width="42">EUR</td>
<td align="right"><?php echo $eur;?></td>
</tr>
<tr>
<td><img src="http://www.bnr.ro/img/valute/usd.gif" title="Curs Dolar" alt="Curs Dolar"/></td>
<td align="left">USD</td>
<td align="right"><?php echo $usd;?></td>
</tr>
<tr>
<td align="left"><img src="http://www.bnr.ro/img/valute/gbp.gif" alt="Lira Sterlina" title="Lira Sterlina"/></td>
<td align="left">GBP</td>
<td align="right"><?php echo $gbp;?></td>
</tr>
<tr>
<td align="left"><img src="http://www.bnr.ro/img/valute/xau.gif" alt="Gram aur" title="Gram aur"/></td>
<td align="left">XAU</td>
<td align="right"><?php echo $xau;?></td>
</tr>
<tr>
<td align="left"><img src="http://www.bnr.ro/img/valute/chf.gif" alt="Franc Elvetian" title="Franc Elvetian"/></td>
<td align="left">CHF</td>
<td align="right"><?php echo $chf;?></td>
</tr>
<tr>
<td align="left"><img src="http://www.bnr.ro/img/valute/pln.gif" alt="Zlotul polonez" title="Zlotul polonez"/></td>
<td align="left">PLN</td>
<td align="right"><?php echo $pln;?></td>
</tr>
<tr>
<td colspan="3" align="right"><hr /></td>
</tr>
<tr>
<td colspan="3" align="right">valabil la : <?php  echo $data;?></td>
</tr>
</table>

——————————————-

Atentie. pt folosirea lui in CMS-uri gen WORDPRESS, JOOMLA etc, este necesara insalarea unor pluginuri pt. recunoasterea de cod php. Printr-un simplu google search se pot gasi foarte usor.

5,496 vizualizari

12 comentarii

  • Claudiu pe 6 noiembrie 2008 at 12:42 am

    Salut, mie imi da eroare script-ul tau. Folosesc WordPress si l-am pus in sidebar, iar eroarea este:

    Parse error: syntax error, unexpected ‘:’ in /var/www/wordpress/wp-content/plugins/execphp.php(37) : eval()’d code on line 2

    Imi cer scuze dar nu sunt expert in php. Stiu insa ca eroarea nu este de la mine deoarece codul se executa.
    Ai idee ce o fi gresit?

    PS: Site-ul este la nume daca te ajuta cu ceva.

  • knion pe 6 noiembrie 2008 at 4:02 pm

    daca ai copiat scriptul cu copy-paste din pagina, problema s-ar putea sa fie de la fontul folosit in pagina, iar in loc de simbolul (“) sa-ti ia alt simbol. incearca dupa ce copii scriptul sa inlocuiesti tu toate semnele (“) cu cele de la tastatura ta. la fel si cu (‘).

  • Claudiu pe 12 noiembrie 2008 at 1:33 am

    Da, ai dreptate, de la font a fost.
    Mi-am adus aminte ca am mai patit si in alte locuri (dar nu am facut legatura). Oh well…
    Bun, si pentru alte monede fac pur si simplu:

    $aux_MONEDA=explode(””, $aux[NUMAR_LINIE_MONEDA]);
    $MONEDA=str_replace(”NUME_MONEDA’ >”,””, $aux_MONEDA[0]);

    ?

    PS: Daca mi-ai fi raspuns prin e-mail as fi vazut mai repede, ca nu am vazut sa selectez mai jos “Tine-ma la curent…”. Deci, raspunde-mi prin e-mail te rog frumos!

  • Alex pe 30 ianuarie 2009 at 8:39 am

    Super tare :)

  • knion pe 31 martie 2009 at 8:59 am

    de curand BNR si modificat siteul si multe din scripturile care citeau automat cursul BNR nu mai functioneaza, am modificat scriptul adaptat pt. noul site BNR.

  • Andrei pe 16 aprilie 2009 at 12:29 pm

    Nu reusesc…ma poti ajuta ?

  • knion pe 16 aprilie 2009 at 1:17 pm

    imi poti da mai multe detalii.. iti da vreo eroare sau nu stii cum sa-l implementezi ? sau pe ce platforma vrei sa-l folosesti ? Wordpress ? Jomla ? altceva.. ?

  • knion pe 16 aprilie 2009 at 1:19 pm

    daca ti-e mai usor.. vb pe mess.. merge si mai rpd ;) id-ul meu > canyons_2000

  • lobsang pe 14 august 2009 at 12:15 pm

    The best way to implement daily curency …
    nice move ;)
    Thank You!
    lobsang

  • cttudor pe 7 septembrie 2009 at 9:30 pm

    salut!
    de cateva zile incerc sa fac un script care sa ia cursul in format xml de pe bnr.in cele din urma am ajuns sa caut diverse scripturi deja facute si am ajuns si la al tau…din pacate nici asta nu merge…de specificat k site-ul nu este pus inca pe net si folosesc un server apache…e posibil sa nu mearga din cauza serverului?
    p.s.:daca incerc sa deschid xml-ul cu browserul primesc eroare:XML parsing erroe:syntax error line 1 column 1
    Multumesc anticipat pentru raspuns!

  • knion pe 17 septembrie 2009 at 9:36 am

    incearca sa testezi codu on-line pe o pagina de test.. sau instaleaza WAMPSERVER ultima versiune pentru testare locala. Acest script functioneaza pe multe site-uri uite un exemplu : http://www.badpolitics.ro

  • nelutzu pe 22 mai 2010 at 3:55 am

    Script-ul va genera probleme destul de mari.
    Daca ati citit in pagina unde se afla xml-ul pe bnr.ro scrie ca daca un IP-ul face prea mult traffic, el va fi blocat.

    Acest script nu stocheaza informatia nicaieri in cache, iar daca va fi folosit pe un site de 1000 vizitatori pe zi/ora probabil in maxim 1 saptamana va fi blocat sa nu mai spun ca e traffic ineficient.

    Informatia ar trebui actualizata odata la 3-4 ore.

    EXEMPLU:

    function get_rate() {

    $rate['curdate'] = date(”Y-m-d”);

    $query = mysql_query(”SELECT `eur`, `usd` FROM `cms_rate` WHERE `data`=’”.$rate['curdate'].”‘”);

    if (mysql_num_rows($query) == 0) {
    $xml=@file_get_contents(’http://www.bnr.ro/nbrfxrates.xml’, FILE_BINARY);

    if(!$xml){return 0;}
    preg_match(’/”EUR”>(.*)/’, $xml, $eur);
    preg_match(’/”USD”>(.*)/’, $xml, $usd);

    $rate['eur'] = $eur[1];
    $rate['usd'] = $usd[1];

    $up = mysql_query(”INSERT INTO `cms_rate` (`data`, `eur`, `usd`) VALUES(’”.$rate['curdate'].”‘,’”.$rate['eur'].”‘,’”.$rate['usd'].”‘)”);

    return $rate;

    } else {

    $res = mysql_fetch_assoc($query);
    $rate['usd'] = $res['usd'];
    $rate['eur'] = $res['eur'];
    return $rate;
    }

    Structura tabelului de date:

    SET SQL_MODE=”NO_AUTO_VALUE_ON_ZERO”;

    – ——————————————————–


    – Table structure for table `cms_rate`

    CREATE TABLE IF NOT EXISTS `cms_rate` (
    `id` int(11) NOT NULL auto_increment,
    `data` date NOT NULL,
    `eur` double NOT NULL,
    `usd` double NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;


    – Dumping data for table `cms_rate`

    INSERT INTO `cms_rate` (`id`, `data`, `eur`, `usd`) VALUES
    (10, ‘2009-09-22′, 4.2665, 2.9123);

    PHP + MYSQL un script destul de simplu care face cache la informatie. E facut sa functioneze doar pe monezile EUR si USD (principale) si nu foloseste nici un XML parser.

Get Adobe Flash playerPlugin by wpburn.com wordpress themes

Ultima frontiera in web design.