|
detective
|
|
Curs BNR cu PHP, varianta XML, folosind SimpleXML, Iunie 16, 2008, 01:35:30 am
|
|
Am reusit, ms mult
|
|
|
|
|
Memorat
|
|
|
|
johnake
Newbie
Deconectat
Mesaje: 4
|
|
Curs BNR cu PHP, varianta XML, folosind SimpleXML, Septembrie 30, 2008, 11:13:54 am
|
|
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?
|
|
|
|
|
Memorat
|
|
|
|
|
Agkelos
|
|
Curs BNR cu PHP, varianta XML, folosind SimpleXML, Septembrie 30, 2008, 11:23:45 am
|
|
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
|
|
|
|
johnake
Newbie
Deconectat
Mesaje: 4
|
|
Curs BNR cu PHP, varianta XML, folosind SimpleXML, Septembrie 30, 2008, 11:39:11 am
|
|
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, Septembrie 30, 2008, 12:07:31 pm
|
|
Ai putea sa postezi codul exact asa cum il folosesti? Sa fac un test sa vad ce se intampla.
|
|
|
|
|
Memorat
|
|
|
|
johnake
Newbie
Deconectat
Mesaje: 4
|
|
Curs BNR cu PHP, varianta XML, folosind SimpleXML, Septembrie 30, 2008, 12:14:08 pm
|
|
<?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. 
|
|
|
|
|
Memorat
|
|
|
|
|
Agkelos
|
|
Curs BNR cu PHP, varianta XML, folosind SimpleXML, Septembrie 30, 2008, 01:34:43 pm
|
|
Mai, mie imi merge perfect. Nu mai ai ceva pe acolo care ar putea afecta?
|
|
|
|
|
Memorat
|
|
|
|
johnake
Newbie
Deconectat
Mesaje: 4
|
|
Răspuns: Curs BNR cu PHP, varianta XML, folosind SimpleXML, Octombrie 06, 2008, 01:21:14 pm
|
|
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, Octombrie 06, 2008, 01:23:56 pm
|
|
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 
|
|
|
|
|
Memorat
|
|
|
|
HostGator
Newbie

Mesaje: Multe
|
Ai auzit de aligatorul care ofera hosting?
|
|
|
|
|
|