Webmail
Director web
::
Tutoriale
::
Code archive
::
Upload
::
Forum
::
Acasã
|
Ajutor
|
Cãutare
|
Autentificare
|
Înregistrare
» Utilizator
» Parteneri
» Linux Server
» WorldIT.info
» Web hosting
» Gazduire web
» IPFind
» Invatam.net
» PC Troubleshooting
» RegEx
» sigur.info
» Computericã
» De citit
» LAMP in CentOS
» LAMP in Ubuntu Server
» FAMP/LAMP in FreeBSD
» Formular de contact
» Optimizare Apache
» Optimizare MySQL
» Recomandari
» Hazardous Gaming
» What I Know
» PHP Funk
» Taskuri securitate
» Anti spam
» O parola eficienta
» Trojan, backdoor, spyware
» Phishing si pharming
» Securizare windows
» Cum functioneaza un virus?
» Certificate SSL
» Gumblar
» Un firewall eficient
» Ingineria sociala
» Statistici
65486
de mesaje.
7732
de topicuri.
1231
de utilizatori.
Kopotosa
e ultimul utilizator inregistrat.
[Detalii]
SkullBox Forum
|
Development
|
Web Development
|
PHP Snippets
| Topic:
Curs BNR cu PHP, varianta XML, folosind SimpleXML
|
|
Pagini:
1
[
2
]
3
Print
Curs BNR cu PHP, varianta XML, folosind SimpleXML [4928 afisari]
detective
Mesaje: 130
Offline
Curs BNR cu PHP, varianta XML, folosind SimpleXML
Am reusit, ms mult
Logged
16-06-2008, 01:35
Twitt
::
johnake
Mesaje: 8
Offline
Curs BNR cu PHP, varianta XML, folosind SimpleXML
Hmm... mi se pare mie sau nu face fata BNR'ul?
Code:
[30-Sep-2008 12:22:33] PHP Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /home/site/public_html/stoc/curs_valutar.php:31
Stack trace:
#0 /home/site/public_html/stoc/curs_valutar.php(31): SimpleXMLElement->__construct('')
#1 /home/site/public_html/stoc/index.php(411): include('/home/mediamax/...')
#2 {main}
thrown in /home/site/public_html/stoc/curs_valutar.php on line 31
Linia 31 fiind:
Code:
$xml = new SimpleXMLElement($curs);
Daca inteleg bine, nu citeste fisierul XML, corect?
Logged
30-09-2008, 11:13
Twitt
::
Agkelos
Mesaje: 7196
Offline
Curs BNR cu PHP, varianta XML, folosind SimpleXML
Nu e interpretat corect XML-ul. Eu folosesc acelasi script pe un site personal si se updateaza corect, deci tind sa cred ca e o problema locala. Poti face un test cu un alt XML sa vezi daca e interpretat corect? Eventual ia cu CURL un alt fisier si vezi daca reuseste sa il copieze corect.
Logged
»
Ce putem face cu sed?
»
Cache pentru imagini si texte
»
Formular de contact
30-09-2008, 11:23
Twitt
::
johnake
Mesaje: 8
Offline
Curs BNR cu PHP, varianta XML, folosind SimpleXML
Am incercat cu "$url = '
http://www.mozilla.org/projects/xslt/test.xml';
"
Nici o eroare in error_log.
Problema este de cateva zile, ci nu de la data originala de instalare a scriptului, modificari mari nu am facut la script, decat echo la array-urile care ma intereseaza. E ciudat.
Logged
30-09-2008, 11:39
Twitt
::
Agkelos
Mesaje: 7196
Offline
Curs BNR cu PHP, varianta XML, folosind SimpleXML
Ai putea sa postezi codul exact asa cum il folosesti? Sa fac un test sa vad ce se intampla.
Logged
»
Ce putem face cu sed?
»
Cache pentru imagini si texte
»
Formular de contact
30-09-2008, 12:07
Twitt
::
johnake
Mesaje: 8
Offline
Curs BNR cu PHP, varianta XML, folosind SimpleXML
Code:
<?php
/* Author: Agkelos
Link: http://www.skullbox.info/curs-bnr-cu-php-varianta-xml-folosind-simplexml-t3106.html
*/
// Trebuie sa iau XML-ul de pe bnr.ro si sa-l salvez in $curs;
$url = 'http://www.bnro.ro/nbrfxrates.xml';
//$url = 'http://www.mozilla.org/projects/xslt/test.xml';
// Daca exista CURL, folosim CURL. Daca nu, folosim file_get_contents();
if( function_exists('curl_init') ) {
$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_URL,$url);
curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
$curs = curl_exec($curl_handle);
curl_close($curl_handle);
} else {
$curs = file_get_contents($url);
die(htmlspecialchars($curs));
}
// OK, avem fisierul nbrfxrates.xml. Acum trebuie sa il citim
// pentru asta avem nevoie de SimpleXML
if( !class_exists('SimpleXMLElement') ){
// Daca nu suporta SimpleXML e naspa
// Nu extind ca nu am chef sa ma complic inutil
// Oricine vrea sa ma completeze e binevenit :-)
echo 'Serverul nu suporta SimpleXML';
exit;
}
// Daca am ajuns pana aici toate-s bune si ne putem pune pe treaba :-)
$rates = array();
$xml = new SimpleXMLElement($curs);
foreach( $xml->Body->Cube->Rate as $rate ){
$final = array();
foreach( $rate->attributes() as $att => $value ){
if( strcmp($att,'currency') == 0 ) $final['currency'] = (string) $value;
if( strcmp($att,'multiplier') == 0 ) $final['multiplier'] = (string) $value;
}
$final['rate'] = (string) $rate;
if( empty($final['multiplier']) ) $final['multiplier'] = 1;
array_push($rates,$final);
}
// Daca am ajuns aici, datele sunt pastrate in $rates
echo '<div style="height:120px;width:250px;overflow:auto;margin:5px; background-image: url(images/curs.jpg); border:1px solid #000000;" align="center">';
echo "<table>";
echo "<tr><td colspan=2 align=center><b>Curs valutar BNR
".$today = date("d.m.Y")."<br/><br/></td></tr></b>";
echo "<tr><td>USD: </td><td>".$rates[18]["rate"]."</td><td>RON</td></tr>";
echo "<tr><td>Euro: </td><td>".$rates[7]["rate"]."</td><td>RON</td></tr></table></div>";
$dolar = $rates[18]["rate"];
$euro = $rates[7]["rate"];
?>
Mersi. Sa nu iei in seama linia die(htmlspecialchars($curs)); am vrut sa testez ceva.
LE: Cred ca o sa incerc sa fac un script ceva mai simplu, care sa-mi copieze content-ul xml'ului cu fwrite, scriptul sa citeasca xml'ul local iar la un anume interval sa-si actualizeze continutul.
Logged
30-09-2008, 12:14
Twitt
::
Agkelos
Mesaje: 7196
Offline
Curs BNR cu PHP, varianta XML, folosind SimpleXML
Mai, mie imi merge perfect. Nu mai ai ceva pe acolo care ar putea afecta?
Logged
»
Ce putem face cu sed?
»
Cache pentru imagini si texte
»
Formular de contact
30-09-2008, 13:34
Twitt
::
johnake
Mesaje: 8
Offline
Răspuns: Curs BNR cu PHP, varianta XML, folosind SimpleXML
Salut,
Imi cer scuze pentru raspunsul intarziat, nu am reusit sa-i dau de cap. Intr-un final am folosit:
Code:
<?php
if (time()-filemtime("nbrfxrates.xml") > 3600) {
$file = file("http://www.bnro.ro/nbrfxrates.xml");
$fopen = fopen("nbrfxrates.xml","w");
foreach ($file as $line) {
fputs($fopen,$line);
}
fclose ($fopen);
$xld = "loaded afresh (and not cached)";
} else {
$file = file("nbrfxrates.xml");
$xld = "cached (and not loaded afresh)";
}
$rate[RON] = 1.00;
foreach ($file as $line) {
ereg("currency='([[:alpha:]]+)'",$line,$gota);
if (ereg(">([[:graph:]]+)<",$line,$gotb)) {
$rate[$gota[1]] = $gotb[1];
}
}
$RON = round(1 / $rate[RON], 8);
$EURO = round($RON * $rate[EUR], 8);
$USD = round($RON * $rate[USD], 8);
$GBP = round($RON * $rate[GBP], 8);
echo '<div style="height:120px;width:250px;overflow:auto;margin:5px; background-image: url(images/curs.jpg); border:1px solid #000000;" align="center">';
echo "<table>";
echo "<tr><td colspan=3 align=center><b>Curs valutar BNR<br> ".$today = date("d.m.Y")."<br/><br/></td></tr></b>";
echo "<tr><td><img src=usd.gif></td><td><b>USD:</b> </td><td><b>".$USD."</b></td><td><b>RON</b></td></tr>";
echo "<tr><td><img src=eur.gif></td><td><b>EURO:</b> </td><td><b>".$EURO."</b></td><td><b>RON</b></td></tr></table></div>";
?>
Offtopic: De ce la code tags cand folosesc php short-tags nu-mi face highlight la cod?
Logged
06-10-2008, 13:21
Twitt
::
Agkelos
Mesaje: 7196
Offline
Răspuns: Curs BNR cu PHP, varianta XML, folosind SimpleXML
Ar fi trebuit sa iti functioneze si varianta care ai postat-o inainte. Anyway, bine ca te-ai descurcat intr-un final
Quote from: johnake on 06-10-2008, 13:21
Offtopic: De ce la code tags cand folosesc php short-tags nu-mi face highlight la cod?
Pentru ca short-tags e obsolete si e descurajata utilizarea inca din PHP4
Logged
»
Ce putem face cu sed?
»
Cache pentru imagini si texte
»
Formular de contact
06-10-2008, 13:23
Twitt
::
Y2K
Mesaje: 214
Offline
Răspuns: Curs BNR cu PHP, varianta XML, folosind SimpleXML
eu am modifcat putin codul sa imi dea si in alte monezii ...
Code:
<?php
if (time()-filemtime("nbrfxrates.xml") > 3600) {
$file = file("http://www.bnro.ro/nbrfxrates.xml");
$fopen = fopen("nbrfxrates.xml","w");
foreach ($file as $line) {
fputs($fopen,$line);
}
fclose ($fopen);
$xld = "loaded afresh (and not cached)";
} else {
$file = file("nbrfxrates.xml");
$xld = "cached (and not loaded afresh)";
}
$rate[RON] = 1.00;
foreach ($file as $line) {
ereg("currency='([[:alpha:]]+)'",$line,$gota);
if (ereg(">([[:graph:]]+)<",$line,$gotb)) {
$rate[$gota[1]] = $gotb[1];
}
}
$RON = round(1 / $rate[RON], 8);
$EURO = round($RON * $rate[EUR], 8);
$USD = round($RON * $rate[USD], 8);
$GBP = round($RON * $rate[GBP], 8);
$CHF = round($RON * $rate[CHF], 8);
$HUF = round($RON
* $rate[HUF], 8);
echo '<div style="height:170px;width:200px;overflow:auto;margin:5px; border:1px solid #000000;" align="center">';
echo "<table>";
echo "<tr><td colspan=3 align=center><b><center>Curs valutar BNR<br> ".$today = date("d.m.Y")."<br/><br/></td></tr></b></center>";
echo "<tr><td></td><td><b>EURO:</b> </td><td><b>".$EURO."</b></td><td><b>RON</b></td></tr>";
echo "<tr><td></td><td><b>USD:</b> </td><td><b>".$USD."</b></td><td><b>RON</b></td></tr>";
echo "<tr><td></td><td><b>CHF:</b> </td><td><b>".$CHF."</b></td><td><b>RON</b></td></tr>";
echo "<tr><td></td><td><b>100HUF:</b> </td><td><b>".$HUF."</b></td><td><b>RON</b></td></tr></table></div>";
?>
iar la rulare imi zice :
Quote
Warning: filemtime() [function.filemtime]: stat failed for nbrfxrates.xml in /home/XXXXX/public_html/aaa.php on line 2
Warning: fopen(nbrfxrates.xml) [function.fopen]: failed to open stream: Permission denied in /home/XXXXX/public_html/aaa.php on line 4
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXXpublic_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXXpublic_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXXpublic_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fputs(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 6
Warning: fclose(): supplied argument is not a valid stream resource in /home/XXXXX/public_html/aaa.php on line 8
Curs valutar BNR
06.12.2008
EURO: 3.8545 RON
USD: 3.021 RON
CHF: 2.5112 RON
100HUF: 1.4661 RON
cum sa fac sa scap de eroare asta ?
Logged
05-12-2008, 23:35
Twitt
::
astan
Mesaje: 773
Offline
Răspuns: Curs BNR cu PHP, varianta XML, folosind SimpleXML
Probabil ca fisierul nbrfxrates.xml nu exista unde te astepti tu sa fie sau nu ai drepturi pe el.
Logged
06-12-2008, 00:51
Twitt
::
Agkelos
Mesaje: 7196
Offline
Răspuns: Curs BNR cu PHP, varianta XML, folosind SimpleXML
Cel mai probabil nu exista fisierul nbrfxrates.xml asta fiind si motivul pentru care da eroare la fputs().
Tu ce incerci sa faci? Banuiesc ca downloadezi fisierul inainte sa il folosesti... nu?
Logged
»
Ce putem face cu sed?
»
Cache pentru imagini si texte
»
Formular de contact
06-12-2008, 01:09
Twitt
::
Y2K
Mesaje: 214
Offline
Răspuns: Curs BNR cu PHP, varianta XML, folosind SimpleXML
fisierul exista ....
Quote
This XML file does not appear to have any style information associated with it. The document tree is shown below.
−
<DataSet xsi:schemaLocation="
http://www.bnr.ro/xsd
nbrfxrates.xsd">
−
<Header>
<Sender>National Bank of Romania</Sender>
<SendingDate>2008-12-05</SendingDate>
<MessageType>DR</MessageType>
</Header>
−
<Body>
<Subject>Reference rates</Subject>
<OrigCurrency>RON</OrigCurrency>
−
<Cube date="2008-12-05">
<Rate currency="AUD">1.9479</Rate>
<Rate currency="BGN">1.9708</Rate>
<Rate currency="CAD">2.3700</Rate>
<Rate currency="CHF">2.5112</Rate>
<Rate currency="CZK">0.1502</Rate>
<Rate currency="DKK">0.5174</Rate>
<Rate currency="EGP">0.5469</Rate>
<Rate currency="EUR">3.8545</Rate>
<Rate currency="GBP">4.4277</Rate>
<Rate currency="HUF" multiplier="100">1.4661</Rate>
<Rate currency="JPY" multiplier="100">3.2755</Rate>
<Rate currency="MDL">0.2933</Rate>
<Rate currency="NOK">0.4216</Rate>
<Rate currency="PLN">0.9938</Rate>
<Rate currency="RUB">0.1076</Rate>
<Rate currency="SEK">0.3643</Rate>
<Rate currency="SKK">0.1277</Rate>
<Rate currency="TRY">1.9273</Rate>
<Rate currency="USD">3.0210</Rate>
<Rate currency="XAU">74.9053</Rate>
<Rate currency="XDR">4.5187</Rate>
</Cube>
</Body>
</DataSet>
am luoat codul postat mai sus de
johnake
si am introdus alte valori ca pe ala am priceput si eu ceva
Logged
06-12-2008, 06:44
Twitt
::
johnake
Mesaje: 8
Offline
Răspuns: Curs BNR cu PHP, varianta XML, folosind SimpleXML
Scriptul ala practic iti face o "oglinda" a fisierului xml pe server-ul tau si il citeste de-acolo. Am zis ca este mult mai practic asa... De mesajele alea de eroare poti scapa foarte usor cu un error control operator cum ar fi '@' (adica pui un @ in fata fiecarei functii care genereaza erorile), dar totusi eu cred ca problema e din server-ul tau si nu as recomanda aceasta solutie. Am incercat si pe un localhost, intr-adevar la prima executie da un warning: Warning: filemtime() [function.filemtime]: stat failed for nbrfxrates.xml in xxx on line 4, insa la un refresh dispare. Warning-ul e logic deoarece se face o operatiune matematica intre timpul curent si data ultimei modificari a continutului fisierului, fara ca acesta sa fie creat in prealabil.
Logged
16-12-2008, 13:02
Twitt
::
johnake
Mesaje: 8
Offline
Răspuns: Curs BNR cu PHP, varianta XML, folosind SimpleXML
sorry de bump, dar se pare ca au schimbat astia structura xml-ului. O sa revin mai tarziu cu o solutie.
Logged
09-03-2009, 14:20
Twitt
::
Pagini:
1
[
2
]
3
Print
SkullBox Forum
|
Development
|
Web Development
|
PHP Snippets
| Topic:
Curs BNR cu PHP, varianta XML, folosind SimpleXML
Powered by SMF 1.1.11
|
SMF © 2006-2009, Simple Machines LLC
Loading...