
В файлах примера я поместил интерфейс корзины в отдельный файл cart_interface.php, в котором будет выведен список товаров, а также можно будет изменить количество или удалить товар из корзины.
function remove_from_cart(product_id) {
$.post( "backend/remove_from_cart.php", {product_id:product_id}, update_cart_interface());
}
Сама функция выглядит аналогично функции add_to_cart(), с той лишь разницей, что она обращается к другому backend файлу remove_from_cart.php, который выглядит следующим образом:
remove_from_cart.php:
<?php session_start(); include $_SERVER['DOCUMENT_ROOT'].'/cart/cart.php'; remove_from_cart($_POST['product_id']); ?>
После удачного запроса, JavaScript функция remove_from_cart() вызывает функцию update_cart_interface(), которая будет выводить полную корзину товаров с новыми значениями количества и суммы. Описание функции update_cart_interface() будет дано ниже.
function update_product_count(product_id, count) {
$.post( "backend/update_product_count.php", {product_id:product_id, count:count}, update_cart_interface);
}
Она обращается к backend файлу backend/update_product_count.php:
<?php //запускаем сессию session_start(); include $_SERVER['DOCUMENT_ROOT'].'/cart/cart.php'; update_product_count($_POST['product_id'], $_POST['count']);По завершении запроса вызывается функция update_cart_interface(), которую уже пора описать:
function update_cart_interface() {
$.post("backend/cart_interface.php", {},
function on_success(data) {
$('#cart_interface').html(data);
});
}
Она не получает никаких значений, и после выполнения AJAX запроса выводит полученные данные в элемент с идентификатором cart_interface. Backend файл этой функции выглядит так:
<?php
//запускаем сессию
session_start();
include $_SERVER['DOCUMENT_ROOT'].'/cart/cart.php';
include_once $_SERVER['DOCUMENT_ROOT'].'/cart/db.class.php';
$db=new DB;
echo '<table cellpadding="4">';
foreach ($_SESSION['products'] as $key=>$value) {
$q="SELECT * FROM products WHERE id='$key'";
$product=$db->fetch_assoc($db->query($q));
?>
<tr>
<td><?php echo $product['name']?></td>
<td>
количество: <input type="text" size="2" id="product_count_<?php echo $key;?>" value="<?php echo $_SESSION['products'][$key]['count']?>" />
<span onclick="update_product_count(<?php echo $key?>, $('#product_count_<?php echo $key;?>').val()">обновить</span>
</td>
<td>
стоимость:
<?php echo ($_SESSION['products'][$key]['count']*$_SESSION['products'][$key]['coast'])?>
</td>
<td>
<span onclick="remove_from_cart(<?php echo $key?>)">удалить</span>
</td>
</tr>
<?php
}
?>
</table>
<div>Товаров в корзине <?php echo $_SESSION['products_incart']?> на сумму <?php echo $_SESSION['cart_coast']?></div>
<?php
session_start();
include_once 'db.class.php';
$db=new DB;
include 'cart.php';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
<script language="javascript" type="text/javascript" src="functions.js"></script>
<script language="javascript" type="text/javascript" src="jquery.js"></script>
</head>
<body>
<div id="cart_interface">
<table cellpadding="4">
<?php
foreach ($_SESSION['products'] as $key=>$value) {
$q="SELECT * FROM products WHERE id='$key'";
$product=$db->fetch_assoc($db->query($q));
?>
<tr>
<td><?php echo $product['name']?></td>
<td>
количество: <input type="text" size="2" id="product_count_<?php echo $key;?>" value="<?php echo $_SESSION['products'][$key]['count']?>" />
<span onclick="update_product_count(<?php echo $key?>, $('#product_count_<?php echo $key;?>').val())">обновить</span>
</td>
<td>
стоимость:
<?php echo ($_SESSION['products'][$key]['count']*$_SESSION['products'][$key]['coast'])?>
</td>
<td>
<span onclick="remove_from_cart(<?php echo $key?>)">удалить</span>
</td>
</tr>
<?php
}
?>
</table>
<div>Товаров в корзине <?php echo $_SESSION['products_incart']?> на сумму <?php echo $_SESSION['cart_coast']?></div>
</div>
<a href="index.php">вернуться к покупкам</a>
</body>
</html>
На этом хотелось бы закончить статьи о том, как сделать корзину интернет магазина ан AJAX.
© 2010-2026 При использовании материалов ссылка на сайт www.webchaynik.ru обязательна