Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Kurs walut nie działa
Forum PHP.pl > Forum > Przedszkole
kda
Witam,

Mam problem ze skryptem który kiedyś gdzieś znalazłem w sieci, dawno go nie używałem, a na chwilę obecną potrzebuję z niego korzystać ale wywala błąd w linii:
Warning: Invalid argument supplied for foreach() in /volume1/web/waluta.php on line 42
linia 42
  1. foreach($index['NAZWA_WALUTY'] as $value) {

oto skrypt, dodam że nic w nim nie zmieniałem gdy za dobrych czasów działał.
  1. // Początek pobierania linku do kursu walut w formacie XML...
  2. $connect = fsockopen('www.nbp.pl', 80, $errno, $errstr, 10);
  3. if (!$connect)
  4. die($errstr.' ('.$errno.')');
  5. else
  6. {
  7. fwrite($connect, 'GET /kursy/kursya.html HTTP/1.1'."\r\n".'Host: www.nbp.pl'."\r\n".'Connection: close'."\r\n\r\n") or die('Błąd przy wysyłaniu żądania: '.$errstr);
  8. }
  9. while(!feof($connect)) {
  10. $link .= fread($connect, 4096);
  11. }
  12. fclose($connect);
  13.  
  14. $link = '/kursy/'.substr(strstr($link, 'xml/'), '0', '19');
  15. // Koniec. Link w zmiennej $link.
  16.  
  17. // Pobieranie arkusza XML
  18. $connect = fsockopen('www.nbp.pl', 80, $errno, $errstr, 10);
  19. if (!$connect)
  20. die($errstr.' ('.$errno.')');
  21. else
  22. {
  23. fwrite($connect, 'GET '.$link.' HTTP/1.1'."\r\n".'Host: www.nbp.pl'."\r\n".'Connection: close'."\r\n\r\n") or die('Błąd przy wysyłaniu żądania: '.$errstr);
  24. }
  25. while (!feof ($connect)) {
  26. $info .= fgets($connect, 4096);
  27. }
  28.  
  29. $info = explode('
  30.  
  31. ', $info);
  32.  
  33. $info = str_replace(array(' ' ,'
  34. '), array('', ''), $info[1]);
  35.  
  36. $p = xml_parser_create('ISO-8859-1');
  37. xml_parse_into_struct($p, $info, $vals, $index);
  38. xml_parser_free($p);
  39.  
  40. foreach($index['NAZWA_WALUTY'] as $value) {
  41. $waluta[$vals[$value+2]['value']]['name'] = $vals[$value]['value'];
  42. $waluta[$vals[$value+2]['value']]['ratio'] = $vals[$value+1]['value'];
  43. $waluta[$vals[$value+2]['value']]['kurs'] = $vals[$value+3]['value'];
  44. }
  45.  
  46. echo $waluta['USD']['name'].'<br> <b>(USD)</b>: <b>'.$waluta['USD']['kurs'].'</b><br> '.$waluta['EUR']['name'].' <B>(EUR)</B>: <B>'.$waluta['EUR']['kurs'].'</B>';

Z góry dzięki za pomoc
Crozin
1. Do pobrania źródła strony w takim przypadku zapewne wystarczy proste file_get_contents.
2. Jest 2013 rok i NBP wie, że takie dane udostępnia się w normalnym formacie: http://www.nbp.pl/home.aspx?f=/kursy/instr...rsow_walut.html - http://www.nbp.pl/kursy/xml/LastA.xml
3. SimpleXML
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.