Curs valutar bnr pe site-ul tau

Acasa/Programare php Mysql/Curs valutar bnr pe site-ul tau

Curs valutar bnr pe site-ul tau

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.

By | 2011-10-19T13:37:52+00:00 august 22nd, 2008|Programare php Mysql|17 Comments

About the Author:

17 Comentarii

  1. Bogdan Storm mai 24, 2012 la 5:10 pm - Raspunde

    Imi cer scuze, siteul a procesat anumite taguri. Puteti descarca varianta de pe website-ul meu.
    Numai bine.

  2. Bogdan Storm mai 24, 2012 la 5:08 pm - Raspunde

    Pentru cei care vor sa implementeze online acest script:
    1. creati un fisier .php
    2. Deschideti-l cu un editor de texte, preferabil Notepad ++
    3. Efectuati Copy la urmatorul cod si Paste:
    —————————
    load(„http://www.bnro.ro/nbrfxrates.xml”);
    $cursuri = $objDOM->getElementsByTagName(„Rate”);

    $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;
    ?>

    CURS VALUTAR – BNR

    EUR

    USD

    GBP

    XAU

    CHF

    PLN

    Valabil la :

    ————————–
    4. Salvati fisierul.
    5. Incarcati domeniul-vostru.com/fisierul-nou-creat.php

    Succes!

    PS: Am eliminat procedurile care priveau actualizarea datei, tinand cont ca XML-ul de la BNR se actualizeaza in fiecare zi de luni pana vineri, este fresh permanent, DECI data poate fi setata cu ajutorul PHP, fara alte artificii.

  3. Anatolii martie 6, 2012 la 11:28 pm - Raspunde

    Cum de pus alte tipuri de valute????

    Va rog mult!!!

  4. Curs ValutarBNR octombrie 11, 2011 la 1:56 am - Raspunde

    Nelutzu are dreptate! nu folositi direct xml-ul de la BNR. IP-urile ce genereaza trafic mare, vor fi blocate.
    Daca este folosit doar in sopuri personale cu accesari 2-3 pe zi (poate chiar si mai mult) se poate folosi direct xml-ul pentru preluarea cursului. Dar daca vorbim de multe accesari (site-uri cu utilizatori reali) trebuie folosita o baza de date pentru stocarea cursului pentru ziua respectiva, iar baza de date personala, poate fi accesata ori de cate ori este nevoie fara probleme. Inca un avantaj major daca folositi baza de date este acela ca se poate accesa un curs valutar de la o data anterioara, se pot crea statistici si grafice cu evolutia cursului.
    O sa revin cu un script complet de preluare a cursului BNR.

  5. Alina februarie 14, 2011 la 5:39 pm - Raspunde

    Super scriptul, l-am pus si eu pe bogul meu.

  6. nelutzu mai 22, 2010 la 3:55 am - Raspunde

    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.

  7. knion septembrie 17, 2009 la 11:36 am - Raspunde

    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

  8. cttudor septembrie 7, 2009 la 11:30 pm - Raspunde

    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!

  9. lobsang august 14, 2009 la 2:15 pm - Raspunde

    The best way to implement daily curency …

    nice move 😉

    Thank You!

    lobsang

  10. knion aprilie 16, 2009 la 3:19 pm - Raspunde

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

  11. Andrei aprilie 16, 2009 la 2:29 pm - Raspunde

    Nu reusesc…ma poti ajuta ?

  12. knion aprilie 16, 2009 la 1:17 pm - Raspunde

    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.. ?

  13. knion martie 31, 2009 la 8:59 am - Raspunde

    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.

  14. Alex ianuarie 30, 2009 la 10:39 am - Raspunde

    Super tare 🙂

  15. Claudiu noiembrie 12, 2008 la 1:33 am - Raspunde

    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!

  16. knion noiembrie 6, 2008 la 4:02 pm - Raspunde

    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 (‘).

  17. Claudiu noiembrie 6, 2008 la 12:42 am - Raspunde

    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.

Comenteaza