Rozdział 21. ♦ Tworzenie sklepu internetowego 557
Elementami formularza są pola typu input o nazwach zgodnych z identyfikatorami książek oraz wartości zgodnej z liczbą znajdujących się w koszyku egzemplarzy tego tytułu. Jeśli więc w zamówieniu znajdują się 3 egzemplarze książki o identyfikatorze 15, pole input będzie skonstruowane następująco:
<input type-'text' name='15' value='3' size-'2'/>
W formularzu znajduje się również pole input typu hidden o nazwie action i wartości modifybasket. Określa ono rodzaj operacji (modyfikacja koszyka), wykonywanej przez skrypt main.php, do którego zostaną wysłane dane po kliknięciu przycisku Zapisz zmiany.
Do pól tabeli są wprowadzane dane odczytywane z wyników zapytania, z koszyka oraz wyliczane dynamicznie. Z tablicy row są odczytywane:
♦ tytuł (indeks 1, $row[l]),
♦ cena (indeks 2, $row[2]),
♦ identyfikator (indeks 0, $row[0]).
Liczba zamówionych egzemplarzy danego tytułu jest odczytywana z tablicy koszyk, na podstawie indeksu odczytanego ze zmiennej row:
$_SESSI0N['koszyk’][$row[0]] i jest zapisywana w zmiennej ile.
Wartość egzemplarzy danego tytułu wynika z prostego działania: liczba egzemplarzy * cena jednego egzemplarza które po przełożeniu na kod ma postać:
$_SESSI0N['koszyk'][$row[0]] * $row[2]
Całkowita wartość zamówienia jest natomiast obliczana przez sumowanie wartości jednostkowych i zapisywana w zmiennej suma.
W ostatniej komórce tabeli znajduje się odnośnik Do kasy, który jest wywołaniem skryptu main.php z parametrem action ustawionym na checkout. Takie wywołanie spowoduje wykonanie funkcji checkout, która zostanie omówiona w kolejnej sekcji tego rozdziału.
Ostatnią funkcją, którą należy omówić w tym miejscu, jest modifyBasket. Dokonuje ona uaktualnienia koszyka, zgodnie z danymi przekazanymi z przedstawionego powyżej formularza, związanego z koszykiem. Kod funkcji modifybasket został zaprezentowany na listingu 21.11.
Listing 21.11. Kod funkcji modifyBasket_ __
functlon modifyBasketO
{
foreach($ SESSIONCkoszyk'] as $key => $val){ if(!1sSet($ P0ST[$key])){ unset($_SESSI0N['koszyk'][$key]):