Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sklep internetowy z pliku XML
phaphiq
post 16.09.2009, 23:54:34
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 16.09.2009

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


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.

Ten post edytował phaphiq 16.09.2009, 23:57:20
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Berg
post 17.09.2009, 00:57:35
Post #2





Grupa: Zarejestrowani
Postów: 180
Pomógł: 37
Dołączył: 1.05.2008
Skąd: Białystok

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


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.
Go to the top of the page
+Quote Post
bełdzio
post 17.09.2009, 01:20:53
Post #3





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

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


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


--------------------
Go to the top of the page
+Quote Post
phaphiq
post 23.09.2009, 11:23:49
Post #4





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 16.09.2009

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


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?
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: 14.08.2025 - 09:58