JavaScript - Cookie, koszyk na zakupy
| DZIAŁANIE: | Wejdź tutaj |
Kod:
Ewentualne Objaśnienia:
Zaprezentowany przykład pochodzi z książki Dave Thau "JS Podręcznik Tworzenia
Interaktywnych Stron Internetowych". Generalnie cały potrzebny JavaScript do
tego przykładu znajduje się tutaj .
Nie będę omawiał wszystkiego co jest w tym pliku, skupie się na ważniejszych
rzeczach :
- główna strona sklepu to zwykłe linki do dwóch stron z towarami oraz przycisk
otwierający stronę podsumowania zakupów
- pliki z towarami to proste formularze, gdzie podajemy ile sztuk danego
produktu chcielibyśmy zakupić, w momencie kliknięcia dodaj wywoływana jest
funkcja addToCart :
- jej parametry to : liczba zamawianych sztuk, nazwę towaru,
cenę towaru
- tworzony jest ciąg typu :
produkt:ilość_sztuk:cena_za_sztukę
- sprawdzane jest poprzez funkcję WM_readCookie() czy
istnieje u danego usera ciastko 'purchases'. Jeśli to ciastko już istnieje to na
jego końcu jest zapisany jest znak "/" oraz ciąg - ten, o którym pisałem wyżej
- czyli jak się domyślacie w cookie każdy zamówiony towar
jest oddzielany znakiem "/" a poszczególne składowe danego towaru przez ":"
- jest to o tyle bezsensowne bo każdy towar jeśli znowu go
zamówimy (dołożymy jakieś sztuki) jest dopisywany do ciągu, powinno być tak, że
ciąg jest modyfikowany (ilość sztuk tego powtarzającego się towaru)
- po tych zabiegach jest zapisywane ciastko przez funkcję
WM_setCookie()
- plik wyświetlający podsumowanie (widać w nim, że przykład ten za dobry nie
jest ze względu właśnie na ten nieudolny zapis w cookie tych samych towarów)
korzysta z funkcji checkOut(), która z kolei korzysta z funkcji
readTheCookie () :
- odczytywane jest cookie przez funkcję WM_readCookie
- jeśli cookie istnieje sprawdzane jest czy istniej więcej
towarów czy tylko jeden (bo znak / oddziela towary). Jeśli tylko jeden towar to
umieszczany jest on w tablicy the_info na pozycji 0 (indeks)
- jeśli towarów jest więcej oddzielamy je do tablicy
split_stuff, a z tej tablicy kopiujemy to do tablicy the_info (ona została
przekazana jako parametr tej funkcji, przez funkcję checkOut)
- po tym wszystkim tablica the_info zawiera informacje o
wszystkich towarach (lub też jednym)
- funkcja checkOut() :
- czytamy produkty do tablicy the_stuff (omówione
wyżej)
- w pętli towary są rozdzielane (pamiętacie zapis z
dwukropkami dla danego towaru), rozdzielenia następuje do tablicy this_item,
kolejna pętla umieszcza informacje o każdym z towarów (towar, ilość, cena)
w tabelce, a dalej jest obliczona wartość kolumny razem, wartość ta jest również
dodawana do zmiennej total, która przechuje całkowitą sumę cen zakupów.