• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Api Kurs walut

Object Storage Arubacloud
0 głosów
926 wizyt
pytanie zadane 10 czerwca 2017 w PHP przez Piotrek Jabłoński Początkujący (250 p.)

Siema mam problem z API mam ten gotowy skrypt:

<?php 
function convert($text) {
	// Zmień na żądane kodowanie znaków - puste pozostawia UTF-8
	$charset = '';
	
	if($charset && function_exists('iconv')) {
		return iconv('utf-8', $charset, $text);
	}
	elseif($charset && function_exists('recode_string')) {
		return recode_string('utf8...'.$charset, $text);
	}
	else
	{
		return $text;
	}
}

class kursy {
	/* zawartość arkusza XML z kursami */
	private $contents = '';
	
	function __construct($url, $cache = 'kursy_cache.txt',
					$lastupdate = '12:16 -1 day', $thisupdate = '12:16') {
		// Plik z cache:
		// $cache
		// Czy dane w cache w cache aktualne?
		$recent = TRUE;
		
		// Daty ostatnich aktualizacji
		$lastupdate = strtotime($lastupdate);
		$thisupdate = strtotime($thisupdate);
		
		// Sprawdzenie możliwości zapisania kursów
		if( ( !file_exists($cache) AND !is_writable(dirname($cache)) )
			OR ( file_exists($cache) AND !(is_writable($cache)) ) ) {
			// Plik cache "nie działa"
			$cache = '';
		}
		else
		{
			// Dane są aktualne?
			if(@filemtime($cache) < $lastupdate) {
				$recent = FALSE;
			}
			elseif(time() > $thisupdate && @filemtime($cache) < $thisupdate) {
				$recent = FALSE;
			}
		}
		
		// Nie istnieje możliwość zapisu w cache lub dane są nieaktualne
		if($cache == '' OR !$recent) {
			// Link do arkusza XML
			$this->contents = file_get_contents($url);
			if($this->contents == FALSE) {
				throw new Exception('Nie udało się pobrać kursów walut.');
			}
			
			// Można zapisać do cache'a
			if($cache != '') {
				// Zapamiętujemy arkusz
				file_put_contents($cache, $this->contents);
			}
		}
		else
		{
			// Ładujemy zapisane dane
			$this->contents = file_get_contents($cache);
		}
	}
	
	function znajdz($fields) {
		if(!is_array($fields)) {
			$fields = array($fields);
		}
		
		$last = libxml_use_internal_errors(TRUE);
		$info = new SimpleXMLElement($this->contents);
		libxml_use_internal_errors($last);
		
		/* tablica wypełniana kursami */
		$rates = array(
			'numer_tabeli' => (string)$info->numer_tabeli,
			'data_publikacji' => (string)$info->data_publikacji
		);
		
		foreach($info->pozycja as $v) {
			$kod = (string)$v->kod_waluty;
			$rates[$kod] = array(
				'nazwa' => convert((string)$v->nazwa_waluty),
				'ilosc' => (string)$v->przelicznik
			);
			foreach($fields as $field) {
				$rates[$kod][$field] = (string)$v->$field;
			};
		}
		
		return $rates;
	}
}

try {
		// adres do kursów, plik do cache'owania, poprzednia aktualizacja, najbliższa aktualizacja
	$kursy = new kursy('http://api.nbp.pl/api/exchangerates/tables/a/?format=xml', 'kursy_cache.txt', '12:16 -1 day', '12:16');
	$waluta = $kursy->znajdz(array('kurs_sredni'));
	
	    echo $waluta['USD']['ilosc'].' USD: '.$waluta['USD']['kurs_sredni'].' </br>
'.$waluta['EUR']['ilosc'].' EUR: '.$waluta['EUR']['kurs_sredni'].' </br>
'.$waluta['CHF']['ilosc'].' CHF: '.$waluta['CHF']['kurs_sredni'].' </br>
'.$waluta['GBP']['ilosc'].' GBP: '.$waluta['GBP']['kurs_sredni'].' </br>
';

}
catch(Exception $e) {
	echo 'Błąd przy wyświetlaniu kursów walut.';
	// Aby pokazać błąd, odkomentuj poniższą linię:
	// var_dump($e);
}

?>

I mam z nim problem bo nie dziala a bledy takie sa :


Notice: Undefined index: USD in C:\xampp\htdocs\test\index.php on line 106

Notice: Undefined index: USD in C:\xampp\htdocs\test\index.php on line 106

Notice: Undefined index: EUR in C:\xampp\htdocs\test\index.php on line 107

Notice: Undefined index: EUR in C:\xampp\htdocs\test\index.php on line 107

Notice: Undefined index: CHF in C:\xampp\htdocs\test\index.php on line 108

Notice: Undefined index: CHF in C:\xampp\htdocs\test\index.php on line 108

Notice: Undefined index: GBP in C:\xampp\htdocs\test\index.php on line 109

Notice: Undefined index: GBP in C:\xampp\htdocs\test\index.php on line 109
USD:
EUR:
CHF:
GBP:
 

Powie mi ktos co jest nie tak z nim??

komentarz 10 czerwca 2017 przez QizmoPL Stary wyjadacz (11,440 p.)
naucz sie czytac kody bledu
komentarz 10 czerwca 2017 przez Piotrek Jabłoński Początkujący (250 p.)
a Ty nie spamować :]

Niezdefiniowany index na lini ~~

czyli
        echo $waluta['USD']['ilosc'].' USD: '.$waluta['USD']['kurs_sredni'].' </br>
'.$waluta['EUR']['ilosc'].' EUR: '.$waluta['EUR']['kurs_sredni'].' </br>
'.$waluta['CHF']['ilosc'].' CHF: '.$waluta['CHF']['kurs_sredni'].' </br>
'.$waluta['GBP']['ilosc'].' GBP: '.$waluta['GBP']['kurs_sredni'].' </br>
';

Tylko te indexy sa w pliku wiec?
komentarz 10 czerwca 2017 przez Jedras Maniak (54,860 p.)
var_dump($waluta);

dodaj to przed wyświetlaniem i zobacz, co ciekawego czai się w tablicy.

komentarz 10 czerwca 2017 przez QizmoPL Stary wyjadacz (11,440 p.)

Spam – niechciane lub niepotrzebne wiadomości elektroniczne.

gdzie masz zdefiniowane waluty?

komentarz 10 czerwca 2017 przez Piotrek Jabłoński Początkujący (250 p.)

Qizmo w pliku ktory pobiera skrypt jesli nei istnieje

 

Jedras

array(2) { ["numer_tabeli"]=> string(0) "" ["data_publikacji"]=> string(0) "" }

 

a tu w $kursy

object(kursy)#1 (1) { ["contents":"kursy":private]=> string(3256) " A

111/A/NBP/20172017-06-09bat (Tajlandia)THB0.1099dolar amerykańskiUSD3.7465dolar australijskiAUD2.8229dolar HongkonguHKD0.4806dolar kanadyjskiCAD2.7741dolar nowozelandzkiNZD2.7003dolar singapurskiSGD2.7066euroEUR4.1877forint (Węgry)HUF0.013603frank szwajcarskiCHF3.8566funt szterlingGBP4.7658hrywna (Ukraina)UAH0.1434jen (Japonia)JPY0.033947korona czeskaCZK0.1597korona duńskaDKK0.5630korona islandzkaISK0.037795korona norweskaNOK0.4391korona szwedzkaSEK0.4283kuna (Chorwacja)HRK0.5649lej rumuńskiRON0.9184lew (Bułgaria)BGN2.1411lira tureckaTRY1.0615nowy izraelski szekelILS1.0606peso chilijskieCLP0.005632peso filipińskiePHP0.0757peso meksykańskieMXN0.2057rand (Republika Południowej Afryki)ZAR0.2898real (Brazylia)BRL1.1488ringgit (Malezja)MYR0.8782rubel rosyjskiRUB0.0658rupia indonezyjskaIDR0.00028188rupia indyjskaINR0.058247won południowokoreańskiKRW0.00333yuan renminbi (Chiny)CNY0.5512SDR (MFW)XDR5.1702" }

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 567 wizyt
pytanie zadane 18 października 2018 w C i C++ przez Marcin951 Gaduła (3,250 p.)
0 głosów
1 odpowiedź 1,951 wizyt
+1 głos
1 odpowiedź 772 wizyt
pytanie zadane 25 sierpnia 2022 w JavaScript przez vishi7 Początkujący (430 p.)

92,576 zapytań

141,425 odpowiedzi

319,650 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...