detective
 DeconectatMesaje: 130
|
|
Curs BNR cu PHP, varianta XML, folosind SimpleXML, Iun 16, 2008, 01:35
|
|
Am reusit, ms mult
|
|
|
|
|
Memorat
|
|
|
|
johnake
 DeconectatMesaje: 5
|
|
Curs BNR cu PHP, varianta XML, folosind SimpleXML, Sep 30, 2008, 11:13
|
|
Hmm... mi se pare mie sau nu face fata BNR'ul? [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: $xml = new SimpleXMLElement($curs); Daca inteleg bine, nu citeste fisierul XML, corect?
|
|
|
|
« Ultima modificare: Oct 09, 2008, 12:10 de către Agkelos »
|
Memorat
|
|
|
|
|
Agkelos
|
|
Curs BNR cu PHP, varianta XML, folosind SimpleXML, Sep 30, 2008, 11:23
|
|
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.
|
|
|
|
|
Memorat
|
 Problemele se rezolva pe forum. Nu trimiteti PM ca nu va ajut. Pentru urgente, skullbox at skullbox . info.
|
|
|
johnake
 DeconectatMesaje: 5
|
|
Curs BNR cu PHP, varianta XML, folosind SimpleXML, Sep 30, 2008, 11:39
|
|
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.
|
|
|
|
|
Memorat
|
|
|
|
|
Agkelos
|
|
Curs BNR cu PHP, varianta XML, folosind SimpleXML, Sep 30, 2008, 12:07
|
|
Ai putea sa postezi codul exact asa cum il folosesti? Sa fac un test sa vad ce se intampla.
|
|
|
|
|
Memorat
|
 Problemele se rezolva pe forum. Nu trimiteti PM ca nu va ajut. Pentru urgente, skullbox at skullbox . info.
|
|
|
johnake
 DeconectatMesaje: 5
|
|
Curs BNR cu PHP, varianta XML, folosind SimpleXML, Sep 30, 2008, 12:14
|
|
<?php
/* Author: Agkelos Link: http://www.skullbox.info/board/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. 
|
|
|
|
« Ultima modificare: Oct 09, 2008, 12:10 de către Agkelos »
|
Memorat
|
|
|
|
|
Agkelos
|
|
Curs BNR cu PHP, varianta XML, folosind SimpleXML, Sep 30, 2008, 13:34
|
|
Mai, mie imi merge perfect. Nu mai ai ceva pe acolo care ar putea afecta?
|
|
|
|
|
Memorat
|
 Problemele se rezolva pe forum. Nu trimiteti PM ca nu va ajut. Pentru urgente, skullbox at skullbox . info.
|
|
|
johnake
 DeconectatMesaje: 5
|
|
Răspuns: Curs BNR cu PHP, varianta XML, folosind SimpleXML, Oct 06, 2008, 13:21
|
|
Salut, Imi cer scuze pentru raspunsul intarziat, nu am reusit sa-i dau de cap. Intr-un final am folosit: <?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? 
|
|
|
|
|
Memorat
|
|
|
|
|
Agkelos
|
|
Răspuns: Curs BNR cu PHP, varianta XML, folosind SimpleXML, Oct 06, 2008, 13:23
|
|
Ar fi trebuit sa iti functioneze si varianta care ai postat-o inainte. Anyway, bine ca te-ai descurcat intr-un final  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 
|
|
|
|
« Ultima modificare: Oct 09, 2008, 12:10 de către Agkelos »
|
Memorat
|
 Problemele se rezolva pe forum. Nu trimiteti PM ca nu va ajut. Pentru urgente, skullbox at skullbox . info.
|
|
|
|
Y2K
|
|
Răspuns: Curs BNR cu PHP, varianta XML, folosind SimpleXML, Dec 05, 2008, 23:35
|
|
eu am modifcat putin codul sa imi dea si in alte monezii ... <?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 : 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 ? 
|
|
|
|
|
Memorat
|
Sa Mori Pentru Patrie ? Astea-s POVESTI  
|
|
|
astan
 DeconectatMesaje: 357
|
|
Răspuns: Curs BNR cu PHP, varianta XML, folosind SimpleXML, Dec 06, 2008, 00:51
|
|
Probabil ca fisierul nbrfxrates.xml nu exista unde te astepti tu sa fie sau nu ai drepturi pe el.
|
|
|
|
« Ultima modificare: Dec 06, 2008, 00:53 de către astan »
|
Memorat
|
|
|
|
|
Agkelos
|
|
Răspuns: Curs BNR cu PHP, varianta XML, folosind SimpleXML, Dec 06, 2008, 01:09
|
|
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?
|
|
|
|
|
Memorat
|
 Problemele se rezolva pe forum. Nu trimiteti PM ca nu va ajut. Pentru urgente, skullbox at skullbox . info.
|
|
|
|
Y2K
|
|
Răspuns: Curs BNR cu PHP, varianta XML, folosind SimpleXML, Dec 06, 2008, 06:44
|
|
fisierul exista .... 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
|
|
|
|
|
Memorat
|
Sa Mori Pentru Patrie ? Astea-s POVESTI  
|
|
|
johnake
 DeconectatMesaje: 5
|
|
Răspuns: Curs BNR cu PHP, varianta XML, folosind SimpleXML, Dec 16, 2008, 13:02
|
|
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.
|
|
|
|
|
Memorat
|
|
|
|
|
|
|