Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pobieranie kursu EURO do pliku TXT
travi
post 10.12.2018, 09:15:38
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 23.02.2013

Ostrzeżenie: (0%)
-----


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!
Go to the top of the page
+Quote Post
Mega_88
post 10.12.2018, 09:38:02
Post #2





Grupa: Zarejestrowani
Postów: 360
Pomógł: 34
Dołączył: 20.08.2011

Ostrzeżenie: (0%)
-----


Kursy możesz pobierać z NBP - https://www.nbp.pl/home.aspx?f=/kursy/instr...rsow_walut.html ;-)
Go to the top of the page
+Quote Post
travi
post 10.12.2018, 09:43:23
Post #3





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 23.02.2013

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
viking
post 10.12.2018, 10:32:08
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


http://api.nbp.pl/api/exchangerates/rates/A/EUR/?format=json

http://php.net/manual/en/function.json-decode.php


--------------------
Go to the top of the page
+Quote Post
travi
post 11.12.2018, 00:48:26
Post #5





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 23.02.2013

Ostrzeżenie: (0%)
-----


Mam coś takiego, ale echo nie wyświetla nic. Co robię źle?

  1.  
  2. <?php
  3. $zrodlo = file_get_contents('http://api.nbp.pl/api/exchangerates/rates/A/EUR/?format=json');
  4. $dane = json_decode($zrodlo,TRUE);
  5. $waluta = $dat["rates"][0]["mid"];
  6. ?>
  7.  
  8.  
  9. <html>
  10. <body>
  11. <h1><?php echo $waluta; ?></h1>
  12. </body>
  13. </html>
  14.  
Go to the top of the page
+Quote Post
viking
post 11.12.2018, 07:00:46
Post #6





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Wyświetliło by błąd gdybyś włączył ich obsługę. Skąd niby wziąłeś zmienną dat?


--------------------
Go to the top of the page
+Quote Post
leonpro778
post 11.12.2018, 08:48:03
Post #7





Grupa: Zarejestrowani
Postów: 146
Pomógł: 19
Dołączył: 1.03.2012

Ostrzeżenie: (0%)
-----


Cytat(travi @ 11.12.2018, 00:48:26 ) *
Mam coś takiego, ale echo nie wyświetla nic. Co robię źle?

  1.  
  2. <?php
  3. $zrodlo = file_get_contents('http://api.nbp.pl/api/exchangerates/rates/A/EUR/?format=json');
  4. $dane = json_decode($zrodlo,TRUE);
  5. $waluta = $dat["rates"][0]["mid"];
  6. ?>
  7.  
  8.  
  9. <html>
  10. <body>
  11. <h1><?php echo $waluta; ?></h1>
  12. </body>
  13. </html>
  14.  


Skąd niby w $waluta ma być $dat? Zmień to na $dane

Ten post edytował leonpro778 11.12.2018, 08:48:40
Go to the top of the page
+Quote Post
travi
post 11.12.2018, 19:51:20
Post #8





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 23.02.2013

Ostrzeżenie: (0%)
-----


Przepraszam to błąd przy przekopiowywaniu kodu na forum. Mimo tego nadal kurs w H1 się nie wyświetla.
Go to the top of the page
+Quote Post
viking
post 11.12.2018, 20:04:39
Post #9





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


U mnie działa. Włączyłeś raportowanie błędów?


--------------------
Go to the top of the page
+Quote Post
travi
post 11.12.2018, 20:24:33
Post #10





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 23.02.2013

Ostrzeżenie: (0%)
-----


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 biggrin.gif Może czegoś jeszcze potzrebuje na serwerze do tego aby dziać na JSON? To mój JSONOWY debiut smile.gif

Dobra mam coś takiego:

  1. Warning: file_get_contents(): http:// wrapper is disabled in the server configuration by allow_url_fopen=0 in /localhost/kurs.php on line 7
  2. Warning: 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


Jesli dobrze rozumiem to chyba powinienem w php.ini zmienić url fopen na "1"

OK, wszystko działa FOPEN na 1 i Url include na 1 - poszło.
Kiedy ja się nauczę szukać problemów od najprostszych rzeczy? :/
Go to the top of the page
+Quote Post
Lord
post 12.12.2018, 14:55:39
Post #11





Grupa: Zarejestrowani
Postów: 239
Pomógł: 32
Dołączył: 10.03.2004

Ostrzeżenie: (10%)
X----


Cytat(travi @ 11.12.2018, 22:24:33 ) *
Kiedy ja się nauczę szukać problemów od najprostszych rzeczy? :/

Pierwszy krok to włączyć raportowanie błędów smile.gif
Go to the top of the page
+Quote Post
travi
post 27.12.2018, 12:43:20
Post #12





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 23.02.2013

Ostrzeżenie: (0%)
-----


Cytat(Lord @ 12.12.2018, 14:55:39 ) *
Pierwszy krok to włączyć raportowanie błędów smile.gif


No, ostatnio cały dzień szukałem błędu w WP i okazało się, że się QUOTA skończyła. Pierwsza sugestia - zmiany JQUERY które wprowadzałem dzień wcześniej, ale jednak nie. Więc po drodze wpadło milion innych pomysłów. biggrin.gif Co się nasiedziałem to moje.

Siemka, brzuszki najedzone po świętach? Karp miał dużo ości w tym roku? tongue.gif

Odświeżam temat bo napotkałem pewien problem i zastanawiam się czym to jest spowodowane.
Mój finalny kod wygląda tak:

  1. ini_set('display_errors', 1);
  2.  
  3. // Serwer NBP - JSON
  4. $nbp = file_get_contents('http://api.nbp.pl/api/exchangerates/rates/A/EUR/?format=json');
  5. // Dane do dekodowania, wartość TRUE, na wyjściu tablica.
  6. $dane = json_decode($nbp,TRUE);
  7. // Wyciąganie danych z tablicy
  8. $kurs = $dane["rates"][0]["mid"];
  9. // ucięcie ostatnich miejsc po przecinku. Wyświetl tylko 4 pierwsze znaki
  10. $kursfinal = substr("$kurs", 0, -2);
  11.  
  12. // operacja na pliku TXT - zapisywanie zmiennej do bazy tekstowej - całośc podpięta pod CRON
  13. $fp = fopen("kurs.txt", "w");
  14. fputs($fp, $kursfinal);
  15. fclose($fp);
  16.  
  17. echo "$kursfinal"


Do tej pory skrypt wypluwał kurs w formacie np.: 4.28, a więc do 2 miejsca po przecinku. Dziś patrzę i wypluwa do pierwszego miejsca po przecinku. Od początku działania skryptu nie było takich sytuacji, teraz coś sie zmieniło. NBP nadal ma taki sam format w pliku JSON. Pomaga zmiana substr("$kurs", 0, -2); na substr("$kurs", 0, -1); ale nie rozumiem dlaczego... podpowiecie koledzy?
Go to the top of the page
+Quote Post
kapslokk
post 27.12.2018, 12:54:28
Post #13





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


  1. // ucięcie ostatnich miejsc po przecinku. Wyświetl tylko 4 pierwsze znaki
  2. $kursfinal = substr("$kurs", 0, -2);


Twój komentarz kłamie - nie wyświetlasz pierwszych 4 znaków tylko ucinasz 2 ostatnie. Jeżeli w $kurs będziesz miał 4.286 to zwróci 4.2, jeżeli 4.2865 to 4.28.
Wczytaj sobie do zmiennej $kurs dane jako liczbę i użyj: http://php.net/manual/en/function.number-format.php
Go to the top of the page
+Quote Post
travi
post 27.12.2018, 12:59:02
Post #14





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 23.02.2013

Ostrzeżenie: (0%)
-----


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 tongue.gif
Go to the top of the page
+Quote Post
kapslokk
post 27.12.2018, 13:01:51
Post #15





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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 tongue.gif.

Ten post edytował kapslokk 27.12.2018, 13:03:30
Go to the top of the page
+Quote Post
travi
post 27.12.2018, 13:10:26
Post #16





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 23.02.2013

Ostrzeżenie: (0%)
-----


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 tongue.gif Dzięki za rade i udanej zabawy sylwestrowej!
Go to the top of the page
+Quote Post
Pyton_000
post 27.12.2018, 16:10:27
Post #17





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Nie wydłuży. Standardem jest przekazywanie kursów walut do 4 miejsc po przecinku więc to się akurat nie zmieni wink.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 16:58