![]() ![]() |
Post
#21
|
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 12 Dołączył: 9.01.2008 Skąd: Olkusz Ostrzeżenie: (0%)
|
Witam, chciałem spróbować użyć powyższej klasy do pobierania walut z NBP z poprawkami wprowadzonymi przez SOLDI, jednak dostaję następujący komunikat błędu:
Warning: XMLReader::read() [xmlreader.read]: /home/jarkal/public_html/test/:11: parser error : Opening and ending tag mismatch: META line 0 and HEAD in public_html/test/conf/funkcje.php on line 87 Warning: XMLReader::read() [xmlreader.read]: </HEAD><BODY><TABLE width=500 border=0 cellspacing=10><TR><TD> in public_html/test/conf/funkcje.php on line 87 Warning: XMLReader::read() [xmlreader.read]: ^ in public_html/test/conf/funkcje.php on line 87 Warning: XMLReader::read() [xmlreader.read]: An Error Occured while reading in public_html/test/conf/funkcje.php on line 87 Poniżej skrypt od linijki 87 do 106. Kod while($objXml->read()){ if($objXml->name === 'data_publikacji' && $objXml->nodeType==1){ $objXml->read(); $this->strData=$objXml->value; } if($objXml->depth==3){ if($j==4){ $j=0; $this -> arrKursy[$arrWaluta[2]]=$arrWaluta; $arrWaluta=array(); } if($strEncoding!='ISO-8859-2'){ $arrWaluta[$j]=iconv('ISO-8859-2',$strEncoding,$objXml->value); } else{ $arrWaluta[$j]=$objXml->value; } $j++; } } Zauważyłem jeszcze że czasem skrypt zadziała a czasem nie. Czy wina leży po stronie mojego serwera, czy coś z klasą czy NBP? Proszę o info. |
|
|
|
Post
#22
|
|
|
Grupa: Zarejestrowani Postów: 214 Pomógł: 18 Dołączył: 25.04.2009 Ostrzeżenie: (20%)
|
ja to tak rozwiązałem
Kod <?php class cWaluta { public $dane = nill; // dane xmla public $numer = ""; // numer notowa.. public $data = ""; // data notowa.. public $waluta = 'PLN'; public $lista = array(); private $znazwy = array('USD'=>'dolar ameryka..ski','HUF'=>'forint (W..gry)','DKK'=>'korona du..ska','EEK'=>'korona esto..ska', 'RON'=>'lej rumu..ski','BGN'=>'lew bu..garski','LVL'=>'..at ..otewski','PHP'=>'peso filipi..skie','XMN'=>'peso meksyka..skie', 'KRW'=>'won (Korea P..d.)'); static $singlet = nill; static function nazwa_pliku($lokalizacja) { $nazwa = ""; $d = dir($lokalizacja); while (false !== ($entry = $d->read())) if(eregi("([A-Za-z0-9]{1,})(.xml)",$entry)) return $lokalizacja.$entry; } static function wwalucie($nazwa) { $tmp = cWaluta::$singlet; if(isset($tmp->lista[$nazwa])) $tmp->waluta = $nazwa; else $tmp->waluta = 'PLN'; } static function wWaluta($xmlfile) { if(cWaluta::$singlet == nill) cWaluta::$singlet = new cWaluta($xmlfile); return cWaluta::$singlet; } public function przewalutuj($kwota) { $waluta = $this->lista[$this->waluta]; //print_r($waluta); $kw = $kwota / $waluta['kurs']; return sprintf("%01.2f {$waluta['kod']}",$kw * $waluta['licznik']); } private function zmien_nazwe($kod,$nazwa) { if(isset($this->znazwy[$kod])) return $this->znazwy[$kod]; else return $nazwa; } public function __construct($xmlfile) { $this->dane = new DOMDocument("1.0","utf-8"); $this->dane->load($xmlfile); // pobranie mumeru kurs..w $doc = $this->dane->getElementsByTagName('numer_tabeli'); $this->numer = $doc->item(0)->nodeValue; // pobranie daty kursu $doc = $this->dane->getElementsByTagName('data_publikacji'); $this->data = $doc->item(0)->nodeValue; // tworzenie listy walut $doc = $this->dane; $wal = $doc->getElementsByTagName('pozycja'); $this->lista['PLN']= array('nazwa'=>'Polski z..oty','licznik'=>'1','kurs'=>'1','kod'=>'PLN'); foreach($wal as $item) { $kod = $item->getElementsByTagName('kod_waluty')->item(0)->nodeValue; $nazwa = $this->zmien_nazwe($kod, $item->getElementsByTagName('nazwa_waluty')->item(0)->nodeValue); $licznik = $item->getElementsByTagName('przelicznik')->item(0)->nodeValue; $kurs = str_replace(',','.', $item->getElementsByTagName('kurs_sredni')->item(0)->nodeValue); $this->lista[$kod]= array('nazwa'=>$nazwa,'licznik'=>$licznik,'kurs'=>$kurs,'kod'=>$kod); } } } ?> je to w singlecie Kod $plik = cWaluta::nazwa_pliku('/home/grobyopi/www.nbp.pl/Kursy/xml/'); // podajje lokalizacje gdzie jest zapisany xml $waluty = cWaluta::wWaluta($plik); cWaluta::wwalucie("USD"); // ustawiam walute //w cenniku podaje $waluty->przewalutuj(50); //to jest 50zł zwraca juz przeliczone w cronie mam wpisane Kod codzienie o 12:59 "/bin/rm /home/grobyopi/www.nbp.pl/Kursy/xml/*" codziennie o 13:00 "/usr/bin/wget -r http://www.nbp.pl/Kursy/KursyA.html" może ci się coś przyda (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
|
![]() ![]() |
|
Aktualny czas: 14.04.2026 - 23:27 |