Когда сценарий show_cart.php вызывается в результате щелчка на кнопке Сохранить изменения, характер процесса несколько меняется. В данном случае осуществляется передача данных формы. При внимательном рассмотрении кода можно заметить, что кнопка Сохранить изменения является кнопкой отправки формы. Эта форма содержит скрытую переменную save. Если значение этой переменной установлено, мы знаем, что сценарий вызван в результате щелчка на кнопке Сохранить изменения. Это означает, что пользователь мог изменить количество элементов, и желает сохранить эти изменения.
Если вернуться к той части кода формы сохранения изменений, можно заметить, что текстовые поля ввода количества получают имена, совпадающие с ISBN, которые они представляют:
echo "<input type='text' name=\"$isbn\" value=\"$qty\" size=\"3\">";
Теперь рассмотрим ту часть сценария, которая отвечает за сохранение изменений:
if(isset($_POST['save']))
{
foreach ($_SESSION['cart'] as $isbn => $qty)
{
if($_POST[$isbn]=='0')
unset($_SESSION['cart'][$isbn]);
else
$_SESSION['cart'][$isbn] = $_POST[$isbn];
}
$_SESSION['total_price'] = calculate_price($_SESSION['cart']);
$_SESSION['items'] = calculate_items($_SESSION['cart']);
}
Как видно, выполняется перебор всех элементов, хранимых в тележке, и для каждого номера ISBN проверяется значение POST-переменной с таким же именем. В этом случае POST-переменные — это поля ранее рассмотренной формы сохранения изменений.
Если какое-то поле установлено равным нулю, соответствующий элемент удаляется из тележки с помощью функции unset(). В противном случае содержимое тележки обновляется значениями полей формы:
if($_POST[$isbn]=='0')
unset($_SESSION['cart'][$isbn]);
else
$_SESSION['cart'][$isbn] = $_POST[$isbn];
После обновления содержимого тележки повторно вызывается функция calculate_price() и calculate_items() для определения новых значений переменных сеанса total_price и items.
Вывод итоговых данных в строке заголовка
Наверняка вы уже заметили, что в строке заголовка каждой страницы сайта отображаются итоговые данные по состоянию покупательской тележки. Это осуществляется за счет вывода значений переменных сеанса total_price и items при помощи функции do_html_header().
Упомянутые переменные регистрируются, когда пользователь впервые посещает страницу show_cart.php. Кроме того, мы должны реализовать логику для случаев, когда пользователь еще ни разу не открывал данную страницу. Эта логика также содержится в функции do_html_header():
if(!$_SESSION['items']) $_SESSION['items'] = '0';
if(!$_SESSION['total_price']) $_SESSION['total_price'] = '0.00';
Комментарии(0)
Для добавления комментариев надо войти в систему и авторизоватьсяКомментирование статей доступно только для зарегистрированных пользователей:Зарегистрироваться