Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [XML] Ładowanie XML przez php
Forum PHP.pl > Forum > XML, AJAX > XML
Prezi2907
Witam serdecznie.

Problem z jakim się męczę to ładowanie XML na stronkę. Nie wiem czy jest tu problem z złą konfiguracją PHP na darmowych serwerach czy może z skryptem jaki pisze bo widzę że coś wariuje ale nie wiem o co mu biega...
Problem jest taki że po załadowaniu wszystkiego nie pojawia mi się nic na ekranie (nawet żaden błąd związany z złą składnią)
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <produkt>
  3. <name>1</name>
  4. <id>AGDADLCZE0004</id>
  5. <cena>43.00</cena>
  6. <dostepny>11</dostepny>
  7. </produkt>
  8. <produkt>
  9. <name>2</name>
  10. <id>AGDADLCZE0005</id>
  11. <cena>28.00</cena>
  12. <dostepny>10</dostepny>
  13. </produkt>
  14. <produkt>
  15. <name>3</name>
  16. <id>AGDADLCZE0007</id>
  17. <cena>29.00</cena>
  18. <dostepny>7</dostepny>
  19. </produkt>
  20. <produkt>
  21. <name>4</name>
  22. <id>AGDADLCZE0011</id>
  23. <cena>29.00</cena>
  24. <dostepny>7</dostepny>
  25. </produkt>
  26. <produkt>
  27. <name>5</name>
  28. <id>AGDADLCZE0012</id>
  29. <cena>29.00</cena>
  30. <dostepny>4</dostepny>
  31. </produkt>
  32. <produkt>
  33. <name>6</name>
  34. <id>AGDADLCZE0013</id>
  35. <cena>40.00</cena>
  36. <dostepny>5</dostepny>
  37. </produkt>

KOD PHP
  1. <?php
  2. $xml = new XMLReader();
  3. $xml->open('as.xml');
  4.  
  5. while($xml->read())
  6. {
  7.  
  8. if($xml->name == "produkt")
  9. {
  10.  
  11. $id = $xml->getAttribute('id');
  12. $name = $xml->getAttribute('name');
  13. $cena = $xml->getAttribute('cena');
  14. $dostepny = $xml->getAttribute('dostepny');
  15. }
  16.  
  17. }
  18.  
  19. if($id <> NULL AND $nazwa <> NULL AND $cena <> NULL AND $dostepny <> NULL);
  20. echo "<p>".$id.":".$nazwa.":".$cena.":".$dostepny":</p><hr>";
  21.  
  22. }
  23.  
  24. $xml->close();
  25.  
  26. ?>


Od razu mówię że XML które chcę wrzucić pochodzi z I-service (hurtownia ACTION) Napotkałem się na taki sam tylko bardziej rozbudowany skrypt na forum, też zbudowany dla hurtowni action i niestety ten sam efekt.... Po wrzuceniu na serwer XML i uruchomieniu na nim PHP wywala mi biały ekran w przeglądarce...
  1. if($id <> NULL AND $nazwa <> NULL AND $cena <> NULL AND $dostepny <> NULL);

tego średnia na końcu nie było ale dodałem go by zakończyć pętle choć nie wiem czy dobrze zrobiłem...
Przez bardzo długi czas programowałem tylko w C,C# i C++ i szczerze zapomniałem prawie całkowicie jak się pisze w PHP.
Przy okazji chce też powiedzieć że dane te będą integrowane z bazą danych prestashop i za razem jeśli ktoś zna strukturę bazy i odpowiedni skrypt aby wrzuciło to tak w bazę że presta by ją ładnie odczytała to byłbym wdzięczny. I jeśli macie jakieś pomysły na auto generowanie stron dla każdego produktu bo DUŻY XML z hurtowni zawiera dodatkowo zdjęcie i opis każdego produktu oraz jego parametry....

Wiem że to dużo ale wystarczy aby zaskoczył dlaczego nie chce mi nic się pokazać przy ładowaniu pliku php na serwie sformatowany odpowiednio XML...
Co do reszty to dodam jak w ogóle ktoś zajrzy i odpowie na to co jest teraz...

Pozdrawiam
Ps. w chwili obecnej powiedzcie mi chociaż czemu nie chce mi się załączyć to małe cudo...
LINK DO STRONY GDZIE TO TESTUJE
TESTY
erix
Pokaż phpinfo.
Prezi2907
PHPINFO

Na tym samym serwerze tylko druga domena.... Ustawienia dla nich są standardowe i nic nie zmieniałem...

  1. #
  2. if($xml->name == "produkt")


Zastanawia mnie ta argumentacja php czy aby na pewno dobrze wartość pętli podałem...
everth
Jak tylko możesz to włącz raportowanie błędów bo skrypt się ewidentnie nie parsuje

I jeśli cię to nie ogranicza to zmień klasę na SimpleXML lub DOMDocument - a jeśli przekształcasz XML w (X)HTML lub jakikolwiek inny XML to polecam przysiąść trochę nad XSLT
Prezi2907
Chyba coś walnięte jest z php bo nawet

Nie ma php.ini smile.gif
to po pierwsze...
Po drugie mimo że go dodałem itd nadal brak reakcji a tym bardziej brak raportów smile.gif

Może inaczej w czym najlepiej testować php-a?? Bo mam serwer darmowy ale widzę że on jest z deka walnięty i przerzucę się na inny...
everth
Najlepiej na localu - mamy przynajmniej możliwość kontrolowania wszystkich ustawień, trzeba tylko uważać na wersje oraz zainstalowane wtyczki.
Prezi2907
Ok poszedłem na CBA tam już kiedyś pamiętam coś pisałem i mam nadzieje że od tamtego czasu się nie spieprzyli z PHP....

Wracając do sprawy.... Możecie zapodać mi krótki skrypt do sprasowania tego questionmark.gif Może walne go w funkcje podepnę i będzie ok questionmark.gif
Już z simplexml próbowałem i podobny efekt niestety ;/
Co do przekształcania to nie ma szans.... XML który będę ładował ma ponad 390.000 linijek i nie będę go przerabiał...
Wiem jakie dane muszę używać itd żeby mi ładnie wszystko odczytało ale muszę najpierw dojść dlaczego nie mogę XML na stronie otworzyć...

Dlaczego chce to zrobić?
Ponieważ wpierw ładujemy całego xml do strony... Wybieramy interesujące nas artykuły które mają być w sklepie później tylko te które zaznaczyłem mają iść do bazy. Później z bazy idzie to na sklep ze względu na to że jest tego masa nie chce inaczej by to działało tym bardziej że używam prestashop (nie zależy to odemnie) a osoby które chcą żeby to było zrobione chciały by były jak najmniejsze koszty integracji presty z XML...

Pozdrawiam...
Ps. Na cba chociaż reaguje na błędy składni .... Czyli pozostaje parsowanie ....

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <katalog data="2010-08-09 09:00" md5="2E85835DF4A15C67FB49BFC5829C9EC3">
  3. <produkty>
  4. <produkt id="AGDADLCZE0004" cena_netto="43.00" dostepny="11" />
  5. <produkt id="AGDADLCZE0005" cena_netto="34.00" dostepny="5" />
  6. <produkt id="AGDADLCZE0007" cena_netto="28.00" dostepny="10" />
  7. <produkt id="AGDADLCZE0011" cena_netto="29.00" dostepny="7" />
  8. <produkt id="AGDADLCZE0012" cena_netto="29.00" dostepny="4" />
  9. <produkt id="AGDADLCZE0013" cena_netto="40.00" dostepny="5" />
  10. <produkt id="AGDADLCZE0015" cena_netto="48.00" dostepny="0" />
  11. <produkt id="AGDADLCZE0016" cena_netto="59.00" dostepny="9" />
  12. <produkt id="AGDADLCZE0017" cena_netto="36.00" dostepny="1" />
  13. <produkt id="AGDADLCZE0018" cena_netto="36.00" dostepny="3" />
  14. <produkt id="AGDADLCZE0019" cena_netto="36.00" dostepny="0" />
  15. <produkt id="AGDADLCZE0020" cena_netto="38.00" dostepny="10" />
  16. <produkt id="AGDADLEXP0003" cena_netto="186.00" dostepny="2" />
  17. <produkt id="AGDADLFRY0001" cena_netto="112.00" dostepny="3" />
  18. <produkt id="AGDADLGOL0003" cena_netto="68.00" dostepny="6" />
  19. <produkt id="AGDADLGOL0004" cena_netto="40.00" dostepny="7" />
  20. <produkt id="AGDADLGOL0005" cena_netto="48.00" dostepny="5" />
  21. <produkt id="AGDADLGOL0006" cena_netto="69.00" dostepny="5" />
  22. <produkt id="AGDADLKMB0001" cena_netto="225.00" dostepny="1" />
  23. <produkt id="AGDADLKMB0003" cena_netto="190.00" dostepny="0" />
  24. <produkt id="AGDADLKMW0001" cena_netto="159.00" dostepny="0" />
  25. <produkt id="AGDADLKRA0001" cena_netto="84.00" dostepny="3" />
  26. <produkt id="AGDADLLOK0001" cena_netto="30.00" dostepny="1" />

Jak to pomoże to do takiego kodu będę ustawiał wszystko.... Ale to wyczytałem że można na zasadzie children_ zrobić ... Także do tego dojdę ale co z resztą smile.gif

Stronka ładuje się tak ...

To jeszcze kodowanie i będzie ok... pobrałem jeszcze raz skrypt podobny do mojego zmieniłem go lekko nazwy i idzie z tym że jeszcze jest co wybierać z niego bo muszę go przerobić...

Ale już jest dobrze w miarę... Teraz jak to segregować według katygori głównych np. AGD lub Kmputery smile.gif

Kolejny problem... Jak powiązać grupę z podgrupąquestionmark.gif smile.gif
Jak widać mają ten sam początek w ID tylko że podgrupa już ma -AKC np....

  1. <GrupaGlowna id="AGD" nazwa="AGD - Produkty">
  2. <PodGrupy>
  3. <PodGrupa id="AGD-AKC" nazwa="Akcesoria" />
  4. <PodGrupa id="AGD-CHL" nazwa="Automaty do pieczenia chleba" />
  5. <PodGrupa id="AGD-POP" nazwa="Automaty do popcornu" />
  6. <PodGrupa id="AGD-BAT" nazwa="Baterie kuchenne" />


A chce taki efekt mieć później w tabeli która otwiera się pod linkiem wyżej

[X]---------------------[GRUPAGLOWNA][PODGRUPA][...][...][...][...]
[tu checkbox]--------------[AGD]---------[AGD-AKC][...][...][...][...]
do zaznaczania]
który produkt]
idzie do bazy]


Pamiętam że można było robić w ten sposób mnie więcej
  1. if(xml->name = "GrupaGlowna")
  2. {
  3. $id = $xml ->getAttribute('id');
  4. $name = $xml ->getAttribute('nazwa'0;
  5. $id_gl= $id;
  6. $grupa_glowna[$id]= $nazwa;
  7. }
  8. if (xml ->name = "PodGrupa")
  9. {
  10. $id= // I TU JAKIŚ MYK
  11. }

I tam odwołanie w jakiś sposób do gr głównej aby zbierał informacje do - a dalej podawał sobie tą końcówkę... Można chyba jakoś coś takiego zrobić? Wtedy podgrupa powiązana byłaby z Grupą Główną co dawałoby mi oczekiwany efekt...

PROSZĘ BARDZO O POMOC...
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-2024 Invision Power Services, Inc.