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.





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.
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 (‘).
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!
Super tare
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.
Nu reusesc…ma poti ajuta ?
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.. ?
daca ti-e mai usor.. vb pe mess.. merge si mai rpd
id-ul meu > canyons_2000
The best way to implement daily curency …
nice move
Thank You!
lobsang
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!
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
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.