Siemana z rana! Musze zrobić pobieranie kursu waluty € do pliku TXT. Następnie zawartość tego pliku (czyt. kurs waluty) chciałbym wczytać do mojego skryptu i podpiąć to wszystko pod CRON. Zawartość pliku TXT to będzie zmienna potrzeba do kalkulatora. Podpowiecie jak ogarnąć pobieranie kursu waluty?
Pozdrawiam!
Kursy możesz pobierać z NBP - https://www.nbp.pl/home.aspx?f=/kursy/instrukcja_pobierania_kursow_walut.html ;-)
No wiem, juz znalazłem plik: http://api.nbp.pl/api/exchangerates/rates/A/EUR/ ale nie wiem jak wyciągnąć z niego sam kurs
http://api.nbp.pl/api/exchangerates/rates/A/EUR/?format=json
http://php.net/manual/en/function.json-decode.php
Mam coś takiego, ale echo nie wyświetla nic. Co robię źle?
<?php $zrodlo = http://www.php.net/file_get_contents('http://api.nbp.pl/api/exchangerates/rates/A/EUR/?format=json'); $dane = json_decode($zrodlo,TRUE); $waluta = $dat["rates"][0]["mid"]; ?> <html> <body> <h1><?php http://www.php.net/echo $waluta; ?></h1> </body> </html>
Wyświetliło by błąd gdybyś włączył ich obsługę. Skąd niby wziąłeś zmienną dat?
<?php $zrodlo = http://www.php.net/file_get_contents('http://api.nbp.pl/api/exchangerates/rates/A/EUR/?format=json'); $dane = json_decode($zrodlo,TRUE); $waluta = $dat["rates"][0]["mid"]; ?> <html> <body> <h1><?php http://www.php.net/echo $waluta; ?></h1> </body> </html>
Przepraszam to błąd przy przekopiowywaniu kodu na forum. Mimo tego nadal kurs w H1 się nie wyświetla.
U mnie działa. Włączyłeś raportowanie błędów?
Nie, nie włączyłem. Zaraz sprawdzę jeszcze raz. Kurcze dziwne... wrzuciłem normalnie na serwer, wpisałem link do pliku i mam białą stronę. Już druga osoba mi mówi, że wszystko działa poprawnie, a u mnie nie Może czegoś jeszcze potzrebuje na serwerze do tego aby dziać na JSON? To mój JSONOWY debiut
Dobra mam coś takiego:
Warning: http://www.php.net/file_get_contents(): http:// wrapper is disabled in the server configuration by allow_url_fopen=0 in /localhost/kurs.php on line 7 Warning: http://www.php.net/file_get_contents(http://api.nbp.pl/api/exchangerates/rates/A/EUR/?format=json): failed to open stream: no suitable wrapper could be found in /localhost/kurs.php on line 7
http://www.php.net/error_reporting(E_ALL); http://www.php.net/ini_set('display_errors', 1); // Serwer NBP - JSON $nbp = http://www.php.net/file_get_contents('http://api.nbp.pl/api/exchangerates/rates/A/EUR/?format=json'); // Dane do dekodowania, wartość TRUE, na wyjściu tablica. $dane = json_decode($nbp,TRUE); // Wyciąganie danych z tablicy $kurs = $dane["rates"][0]["mid"]; // ucięcie ostatnich miejsc po przecinku. Wyświetl tylko 4 pierwsze znaki $kursfinal = http://www.php.net/substr("$kurs", 0, -2); // operacja na pliku TXT - zapisywanie zmiennej do bazy tekstowej - całośc podpięta pod CRON $fp = http://www.php.net/fopen("kurs.txt", "w"); http://www.php.net/fputs($fp, $kursfinal); http://www.php.net/fclose($fp); http://www.php.net/echo "$kursfinal"
// ucięcie ostatnich miejsc po przecinku. Wyświetl tylko 4 pierwsze znaki $kursfinal = http://www.php.net/substr("$kurs", 0, -2);
Tak tak, własnie o to chodzi. Ucinam 2 ostatnie znaki. JSON z NBP wyświetla zawsze ciąg typu "4.2860" a więc 6 znaków (łącznie z kropką). Z tego wynika, że powinno zostać 4.28, a wyświetla 4.2 - może gdy wykonuje się CRON dodawany jest BOM do txt? Tak sobie pomyślałem. Tylko dziwne, że przez 3 tygodnie działało poprawnie i teraz beż żadnej ingerencji wyświetla jeden znak mniej
PHP Ci automatycznie konwertuje ta zmienna do double i obcina 0. Uzyj number_format i po sprawie. Pewnie przez ostatnie 3 tygodnie na koncu byla inna cyferka niz 0 i nie obcinalo .
Masz rację przyjacielu. To będzie lepsze rozwiązanie, przy okazji ładnie mi to zaokrągli i nie będzie się trzeba martwić jeśli nieoczekiwanie NBP wydłuży swój ciąg w dżejsonie Dzięki za rade i udanej zabawy sylwestrowej!
Nie wydłuży. Standardem jest przekazywanie kursów walut do 4 miejsc po przecinku więc to się akurat nie zmieni
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)