Warning Nu esti autentificat. Te rog autentifica-te sau inregistreaza-te pentru a avea acces la toate facilitatile forumului.
SkullBox  
Noiembrie 22, 2008, 06:24:39 pm
Bine ai venit, Vizitator. Trebuie să te autentifici sau să îţi creezi un cont.
Ai pierdut sau nu ai primit emailul care conţine codul de activare al contului?

Autentifică-te cu numele de utilizator, parola şi precizează durata sesiunii.
Noutăţi: ImageSL - Gazduire de imagini, gratuita
 
 SkullBoxDirector webTutoriale  Pagina principală   Ajutor Caută Autentificare Creează un cont  
Pagini: 1 [2]
  Imprimă  
Subiect: Curs BNR cu PHP, varianta XML, folosind SimpleXML  (Citit de 1850 ori)
0Utilizatori şi 1 Vizitatori
detective
Full Member
***
Deconectat Deconectat

Mesaje: 125


Curs BNR cu PHP, varianta XML, folosind SimpleXML, Iunie 16, 2008, 01:35:30 am

Am reusit, ms mult
Memorat
johnake
Newbie
*
Deconectat 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?

Cod:
[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:
Cod:
$xml = new SimpleXMLElement($curs);
Daca inteleg bine, nu citeste fisierul XML, corect?
Memorat
Agkelos
Administrator
Hero Member
*****
Conectat Conectat

Gen: Bărbat
Mesaje: 4756



WWW
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 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
Administrator
Hero Member
*****
Conectat Conectat

Gen: Bărbat
Mesaje: 4756



WWW
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 Deconectat

Mesaje: 4


Curs BNR cu PHP, varianta XML, folosind SimpleXML, Septembrie 30, 2008, 12:14:08 pm

Cod:
<?php

/* Author: Agkelos
 &nbsp; 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 &nbsp;= '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') ) {
 &
nbsp; &nbsp;$curl_handle=curl_init();
 &
nbsp; &nbsp;curl_setopt($curl_handle,CURLOPT_URL,$url);
 &
nbsp; &nbsp;curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
 &
nbsp; &nbsp;curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
 &
nbsp; &nbsp;$curs curl_exec($curl_handle);
 &
nbsp; &nbsp;curl_close($curl_handle);
} else {
 &
nbsp; &nbsp;$curs file_get_contents($url);
 &
nbsp; &nbsp;die(htmlspecialchars($curs));
}

// OK, avem fisierul nbrfxrates.xml. Acum trebuie sa il citim
// pentru asta avem nevoie de SimpleXML

if( !class_exists('SimpleXMLElement') ){
 &
nbsp; &nbsp;// Daca nu suporta SimpleXML e naspa
 
&nbsp; &nbsp;// Nu extind ca nu am chef sa ma complic inutil
 
&nbsp; &nbsp;// Oricine vrea sa ma completeze e binevenit :-)
 
&nbsp; &nbsp;echo 'Serverul nu suporta SimpleXML';
 &
nbsp; &nbsp;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 ){
 &
nbsp; &nbsp;$final = array();
 &
nbsp; &nbsp;foreach( $rate->attributes() as $att => $value ){
 &
nbsp; &nbsp; &nbsp; &nbsp;if( strcmp($att,'currency') == ) &nbsp$final['currency'] &nbsp; = (string) $value;
 &
nbsp; &nbsp; &nbsp; &nbsp;if( strcmp($att,'multiplier') == $final['multiplier'] = (string) $value;
 &
nbsp; &nbsp;}
 &
nbsp; &nbsp;$final['rate'] = (string) $rate;
 &
nbsp; &nbsp;if( empty($final['multiplier']) ) $final['multiplier'] = 1;
 &
nbsp; &nbsp;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>";
 &
nbsp;
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. Smile
Memorat
Agkelos
Administrator
Hero Member
*****
Conectat Conectat

Gen: Bărbat
Mesaje: 4756



WWW
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 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:
Cod:
<?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($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? Tongue
Memorat
Agkelos
Administrator
Hero Member
*****
Conectat Conectat

Gen: Bărbat
Mesaje: 4756



WWW
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 Tongue

Offtopic: De ce la code tags cand folosesc php short-tags nu-mi face highlight la cod? Tongue
Pentru ca short-tags e obsolete si e descurajata utilizarea inca din PHP4 Tongue
Memorat


HostGator
Newbie
*
Mesaje: Multe

Reclamă cu aligatori
 

Ai auzit de aligatorul care ofera hosting?
 
   
Pagini: 1 [2]
  Imprimă  
 
Schimbă forumul:  

Creat cu MySQL Creat cu PHP Ethical hacking and programming community Director web romanesc cu inscriere gratuita Validat cu XHTML 1.0! Validat cu CSS!
IPFind, FAQDB, LAMP.ro, Good Proxy, Aberez.EU, RoFreeSBIE, ShockingSoft.com, HostVision, Invatam.net, PC Troubleshooting, Curs valutar online
Powered by SMF 1.1.7 | SMF © 2006-2008, Simple Machines LLC
Traducerea în limba română © 2006-2007 www.smf.ro