Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

PHP - kurs walut NBP nie działa

kda 20 Mar 2013 22:31 3372 15
  • #1 20 Mar 2013 22:31
    kda
    Poziom 9  

    Witam,

    Mam problem ze skryptem który powinien pobierać kurs walut z NBP, niestety po otwarciu skryptu otrzymuję komunikat
    Nie można wyświetlić strony XML
    Nie można przeglądać wejścia XML przy użyciu arkusza stylów . Popraw błąd, a następnie kliknij przycisk Odśwież lub spróbuj ponownie później.


    Skrypt wygląda tak:

    Kod: php
    Zaloguj się, aby zobaczyć kod

    0 15
  • #2 21 Mar 2013 10:01
    arnoldziq
    Moderator Programowanie

    Na czym polega problem?
    Mi wypisuje coś takiego:
    PHP - kurs walut NBP nie działa
    Czyli wszystko chyba w porządku.

    0
  • #3 21 Mar 2013 11:50
    marcinj12
    Poziom 40  

    U mnie na localhoście też działa. Może to kwestia ustawień PHP / wersji PHP / Twojej przeglądarki / języka / kodowania?

    0
  • #4 21 Mar 2013 11:58
    arnoldziq
    Moderator Programowanie

    Na serwerze elektrody też działa : Link
    Ale te błędy, których opis podałeś, to nie są błędy PHP. To są błędy generowane przez przeglądarkę, w przypadku próby wyświetlania uszkodzonego/nieprawidłowego pliku XML.
    Więc raczej podejrzewam, ze coś jest "nie tak" z wyświetlaniem samej strony, niż ze skryptem.

    0
  • #5 27 Mar 2013 22:14
    kda
    Poziom 9  

    Sam już nie wiem w czym problem, Podejrzewam że to wina mojego serwera PHP , próbowałem na IE , Firefox. Jak i na jednej tak i na drugiej przeglądarce jest błąd.

    Firefox
    PHP - kurs walut NBP nie działa
    IE
    PHP - kurs walut NBP nie działa

    Może ktoś ma pomysł i doradzi co zmienić w ustawieniach serwera żeby ruszył skrypt u mnie. Serwer jakim dysponuję to Synology

    0
  • #6 28 Mar 2013 21:42
    kda
    Poziom 9  

    kda napisał:
    Sam już nie wiem w czym problem, Podejrzewam że to wina mojego serwera PHP , próbowałem na IE , Firefox. Jak i na jednej tak i na drugiej przeglądarce jest błąd.

    Firefox
    PHP - kurs walut NBP nie działa
    IE
    PHP - kurs walut NBP nie działa

    Może ktoś ma pomysł i doradzi co zmienić w ustawieniach serwera żeby ruszył skrypt u mnie. Serwer jakim dysponuję to Synology


    Zapomniałem dodać że link który przesłał @arnoldziq na moim lapku działa poprawnie, więc wina ewidenie w ustawieniach mojego serwera.
    Proszę o pomoc

    0
  • #7 30 Mar 2013 12:44
    arnoldziq
    Moderator Programowanie

    Oszukaj troszkę i tę linię:

    Kod: php
    Zaloguj się, aby zobaczyć kod
    zmień na taką :
    Kod: php
    Zaloguj się, aby zobaczyć kod
    Nie zapomnij pochwalić się rezultatami :).

    0
  • #8 04 Kwi 2013 23:05
    kda
    Poziom 9  

    A już miałem nadzieję że coś z tego będzie , niestety po dodaniu znaku @ wywala błąd w linii 30 a konkretnie tu:

    Kod: php
    Zaloguj się, aby zobaczyć kod

    0
  • #9 05 Kwi 2013 10:54
    arnoldziq
    Moderator Programowanie

    Generalnie stwierdzam, że masz coś "powalone" z instalacją PHP :( Albo ustawieniami. Ciężko jest znaleźć błąd, jeżeli nie można go odtworzyć. A jak widać na załączonych przykładach, skrypt najnormalniej na świecie działa.
    Ale, przynajmniej, wiadomo, co powoduje problem. A więc można skrypt zmodyfikować np. w taki sposób :

    Kod: php
    Zaloguj się, aby zobaczyć kod
    Uruchom to u siebie i napisz dokładnie jaki dostajesz wynik.

    0
  • #10 06 Kwi 2013 09:54
    kda
    Poziom 9  

    Po uruchomieniu Twojego zmodyfikowanego skryptu w IE otrzymuję taki sam komunikat jak poprzednio a w Firefoxie nowa treść niż poprzednio:

    Warning: simplexml_load_string(): Entity: line 1: parser error : Unsupported encoding ISO-8859-2 in /volume1/web/symax/waluta.php on line 24 Warning: simplexml_load_string(): in /volume1/web/symax/waluta.php on line 24 Warning: simplexml_load_string(): ^ in /volume1/web/symax/waluta.php on line 24 Notice: Trying to get property of non-object in /volume1/web/symax/waluta.php on line 26 Warning: Invalid argument supplied for foreach() in /volume1/web/symax/waluta.php on line 26

    Co mogę mieć nie tak z instalacją/ustawieniami serwera PHP skoro wywala błąd że nie obsługuje kodowania ISO-8859-2 i czy to tylko to jest powodem nie działania skryptu ?

    0
  • #11 06 Kwi 2013 10:18
    arnoldziq
    Moderator Programowanie

    Problem ewidentnie leży po stronie biblioteki simpleXML.
    Trzeba by z niej zupełnie zrezygnować, albo zmienić jej konfigurację.

    Wywaliłem wszystko, co dotyczy SimpleXML, dodałem jedną funkcję konwertującą XML na zwykłą tablicę i program powinien przestać narzekać na stronę kodową. Wszystko oparte jest teraz na DOMDocument, który nie powinien się "zbiesić". Jeżeli jeszcze będzie coś "nie tak", to trzeba dalej uprościć funkcję zamieniająca XML na tablicę, na taką, która nie używa żadnych zewnętrznych bibliotek.

    Kod: php
    Zaloguj się, aby zobaczyć kod

    0
  • #12 07 Kwi 2013 21:34
    kda
    Poziom 9  

    W phpinfo.php szukałem czy mam włączoną opcję, jest włączona ale co do jakieś konfiguracji nie znalazłem wzmianki

    PHP - kurs walut NBP nie działa

    Co do zmodyfikowanego skryptu IE i Firefox wywala następujący błąd:

    Warning: DOMDocument::loadXML(): Unsupported encoding ISO-8859-2 in Entity, line: 1 in /volume1/web/symax/waluta.php on line 8 Notice: Trying to get property of non-object in /volume1/web/symax/waluta.php on line 17 Notice: Trying to get property of non-object in /volume1/web/symax/waluta.php on line 11 Notice: Undefined index: pozycja in /volume1/web/symax/waluta.php on line 83 Warning: Invalid argument supplied for foreach() in /volume1/web/symax/waluta.php on line 83

    Piszesz że trzeba by było zrezygnować z biblioteki simpleXML w tym skrypcie ale może jest jakaś opcja na odpowiednie skonfigurowanie biblioteki o której mowa. Nie ukrywam że szukałem u dobrego wuja google coś na ten temat ale bez skutku.
    Jeszcze raz dziękuję za zaangażowanie i pomoc.

    0
  • #13 08 Kwi 2013 11:00
    arnoldziq
    Moderator Programowanie

    Można spróbować wymusić te kodowanie, np tak :

    Kod: php
    Zaloguj się, aby zobaczyć kod

    0
  • #14 08 Kwi 2013 22:29
    kda
    Poziom 9  

    Niestety wywala komunikat:

    Warning: DOMDocument::loadXML(): Unsupported encoding ISO-8859-2 in Entity, line: 1 in /volume1/web/symax/waluta.php on line 7 Notice: Trying to get property of non-object in /volume1/web/symax/waluta.php on line 16 Notice: Trying to get property of non-object in /volume1/web/symax/waluta.php on line 10 Notice: Undefined index: pozycja in /volume1/web/symax/waluta.php on line 82 Warning: Invalid argument supplied for foreach() in /volume1/web/symax/waluta.php on line 82

    A może dysponujesz jakimś prostym do bólu skryptem opartym na XML który nie jest w jakiś sposób powiązany z kodowaniem itp. a wyłącznie z wyświetleniem jakiegoś tekstu, może ona nam wskaże jakiś kierunek szukania przyczyny.
    Jak już wspomniałem na innych serwerach skrypt działa, dla tego chciał bym się dowiedzieć gdzie pogrzebać (ustawieniach serwera) żeby i u mnie ten skrypt ruszył. Może prześlij mi ustawienia php.ini, może muszę jakąś opcję włączyć, sam już nie wiem :cry:

    0
  • Pomocny post
    #15 09 Kwi 2013 11:11
    arnoldziq
    Moderator Programowanie

    Proszę bardzo. Skrypt parse-uje teraz pobranego XML-a bez użycia jakichkolwiek bibliotek, które mogą narzekać na stronę kodową.

    Kod: php
    Zaloguj się, aby zobaczyć kod

    0