Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sklep internetowy z pliku XML
Forum PHP.pl > Forum > XML, AJAX > XML
phaphiq
Witam.

Chciałbym zrealizować projekt małego sklepu internetowego. Produkty do sprzedaży są w pliku XML, gdzie każdy produkt to osobny element z (między innymi) atrybutem opisującym kategorię produktu. Plik z danymi jest dosyć duży (prawie 2MB) i chyba nierozsądnym byłoby otwieranie go i odczytywanie przez potencjalnego klienta gdy tylko wejdzie on na stronę.

Mam małe doświadczenie z PHP i żadne z XML. Jedyne co umiem zrobić to załadować cały plik do tablicy w php ale to zdaje się być głupie.

Można oczywiście napisać skrypt kopiujący cały bazodanowy plik do mysql ale to też chyba niezbyt optymalne rozwiązanie.

Przy okazji proszę o jakieś porady (linki, numery magazynów komp.) przy tworzeniu sklepu internetowego od podstaw.
Berg
Ja bym to zrobił tak - pobieram xml, potem rozdzielam to na konkretne kategorie, tablicę z produktami dla danej kategorii serializuje (serialize) i tak otrzymany ciąg zapisuje do pliku tekstowego. Potem przy wczytywaniu produktów dla kategorii pobiera się plik i ciąg traktuje się unserialize dzięki czemu dostajemy ponownie tablicę z produktami. Odpada niepotrzebne łączenie się z bazą danych smile.gif

Można by jeszcze ustawić śledzenie pliku xml i w razie jego modyfikacji wykonać ponowne parsowanie aby mieć pewność że produkty są aktualne.
bełdzio
Cytat(phaphiq @ 17.09.2009, 00:54:34 ) *
Można oczywiście napisać skrypt kopiujący cały bazodanowy plik do mysql ale to też chyba niezbyt optymalne rozwiązanie.

why? kilka minut pisania importera i masz "normalny" sklep korzystający z bazy:)

ewentualnie jak masz dostęp do memcache czy innego pamięciowego cache'a wrzuć do niego całego XML i do niego się odwołuj
phaphiq
Jestem w trakcie pisania tego importera i napotkałem się na pierwszy problem. Otóż plik XML ma nagłówek
  1. <?xml version='1.0' encoding='iso-8859-2'?>

no i to chyba nie przechodzi poprawnie przez xml_parse().

Otóż co się dzieje: gdy parser analizuje jakąś wartość (spomiędzy tagów) to wszystko jest ok do napotkania pierwszego znaku polskiego i rozdziela go na dwa pola. Przykład:

  1. <tag>Wolność i swoboda</tag>

zostanie rozdzielone na "Wolno" i "ść i swoboda". Jak widać, rozdzielenie odbywa się tylko raz - do pierwszego znaku narodowego.

Czy można to jakoś obejść bez pisania translatora z pliku xml w tym kodowaniu iso np utf-8?
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-2025 Invision Power Services, Inc.