ресурс для начинающих веб-разработчиков
комплексные веб-услуги по созданию сайтов

Справочный материал по основным языкам программирования и верстки сайтов.

Готовая методика создания простых и сложных динамичных сайтов, с использованием PHP и MySQL.

Использование веб-редактора Adobe Dreamweaver в разработке сайтов.

Использование графических редакторов Adobe Flash, Adobe Photoshop, Adobe Fireworks в подготовке веб-графики.

Разработка веб-сайтов под "ключ".

Разработка отдельных фрагментов сайтов, консультации по вопросам верстки веб-страниц и веб-программирования.

Сохранение изменений содержимого тележки

Сохранение изменений содержимого тележки

Когда сценарий 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';