Создайте корзину с PHP и MySQL
() translation by (you can also view the original English article)
В этом еженедельном уроке screencast + мы научимся создавать собственную корзину покупок с PHP и MySQL. Вы увидите, что всё не так сложно, как кажется.
Предварительный просмотр скринкастов

Шаг 1
Начнём со структуры папок:



Структура
- reset.css - вы можете получить по this ссылке
- style.css - наш css файл для стиля HTML макета
- connection.php - файл для соединения с базой данных
- index.php - шаблон корзины покупок
- cart.php - файл, который меняет продукты в корзине (добавлять, удалять)
- products.php - страница списка продуктов
Шаг 2
Начнем с разметки html, а затем её оформления. Откройте index.php и скопируйте/вставьте код:
1 |
|
2 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
3 |
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
4 |
|
5 |
<html xmlns="http://www.w3.org/1999/xhtml"> |
6 |
<head>
|
7 |
|
8 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
9 |
<link rel="stylesheet" href="css/reset.css" /> |
10 |
<link rel="stylesheet" href="css/style.css" /> |
11 |
|
12 |
<title>Shopping cart</title> |
13 |
|
14 |
</head>
|
15 |
|
16 |
<body>
|
17 |
|
18 |
<div id="container"> |
19 |
|
20 |
<div id="main"> |
21 |
|
22 |
</div><!--end main--> |
23 |
|
24 |
<div id="sidebar"> |
25 |
|
26 |
</div><!--end sidebar--> |
27 |
|
28 |
</div><!--end container--> |
29 |
|
30 |
</body>
|
31 |
</html>
|
Как вы видите, наша страница имеет две колонки: основной столбец и sidebar. Теперь пройдём в CSS. Откройте файл style.css и пропишите код:
1 |
|
2 |
|
3 |
body { |
4 |
font-family: Verdana; |
5 |
font-size: 12px; |
6 |
color: #444; |
7 |
}
|
8 |
|
9 |
|
10 |
#container { |
11 |
width: 700px; |
12 |
margin: 150px auto; |
13 |
background-color: #eee; |
14 |
overflow: hidden; /* Set overflow: hidden to clear the floats on #main and #sidebar */ |
15 |
padding: 15px; |
16 |
}
|
17 |
|
18 |
#main { |
19 |
width: 490px; |
20 |
float: left; |
21 |
}
|
22 |
|
23 |
#sidebar { |
24 |
width: 200px; |
25 |
float: left; |
26 |
}
|
Вот как теперь выглядит наша страница продуктов:



Полный скринкаст

Шаг 3
Прежде чем перейти к части PHP/MySQL, нам нужно создать базу данных. Откройте phpMyadmin и выполните следующие действия:
- Перейдите на вкладку Privileges, нажмите кнопку добавления нового пользователя и настройте: Username: tutorial; Host: localhost; Password: supersecretpassword. Теперь убедитесь, что установлены Global privileges; затем переходите к следующему шагу.
- Создайте новую базу данных под названием tutorials.
- Создайте новую таблицу products и установите количество полей 4. Теперь заполните эти поля так: id_integer - убедитесь, что он установлен в INT и пометьте его как PRIMARY (также установите его в auto_increment); name - будет VARCHAR длиной 100; description - VARCHAR длиной 250; price - значение DECIMAL (2,6)
- Заполните таблицу несколькими примерами продуктов.
Для экономии времени я экспортировал свою таблицу, чтобы вы просто запустили следующий запрос:
1 |
|
2 |
CREATE TABLE IF NOT EXISTS `products` ( |
3 |
`id_product` int(11) NOT NULL AUTO_INCREMENT, |
4 |
`name` varchar(100) NOT NULL, |
5 |
`description` varchar(250) NOT NULL, |
6 |
`price` decimal(6,2) NOT NULL, |
7 |
PRIMARY KEY (`id_product`) |
8 |
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ; |
9 |
|
10 |
INSERT INTO `products` (`id_product`, `name`, `description`, `price`) VALUES |
11 |
(1, 'Product 1', 'Some random description', '15.00'), |
12 |
(2, 'Product 2', 'Some random description', '20.00'), |
13 |
(3, 'Product 3', 'Some random description', '50.00'), |
14 |
(4, 'Product 4', 'Some random description', '55.00'), |
15 |
(5, 'Product 5', 'Some random description', '54.00'), |
16 |
(6, 'Product 6', 'Some random description', '34.00'); |









Шаг 4
До извлечения данных из базы данных я сделаю index.php шаблон для списка продуктов и корзины. Поэтому добавьте следующий код в начало страницы index.php:
1 |
|
2 |
<?php
|
3 |
session_start(); |
4 |
require("includes/connection.php"); |
5 |
if(isset($_GET['page'])){ |
6 |
|
7 |
$pages=array("products", "cart"); |
8 |
|
9 |
if(in_array($_GET['page'], $pages)) { |
10 |
|
11 |
$_page=$_GET['page']; |
12 |
|
13 |
}else{ |
14 |
|
15 |
$_page="products"; |
16 |
|
17 |
}
|
18 |
|
19 |
}else{ |
20 |
|
21 |
$_page="products"; |
22 |
|
23 |
}
|
24 |
?>
|
- session_start() - для дальнейшего использования; это позволит нам использовать сеансы (очень важно, чтобы session_start был написан прежде, чем другие данные будут отправлены в браузер).
- Во второй строке мы укажем connection.php, который установит соединение с базой данных (мы рассмотрим это в секунду). И ещё одно: разница между include и require заключается в том, что если вы используете require и файл не может быть найден, выполнение скрипта закончится. Если вы используете "include", скрипт продолжит работать.
- Вместо копирования всего html-кода (ссылка на css, на js) для каждого файла на вашем сайте, можете просто сделать их все относительно одного файла. Сначала я проверяю, есть ли переменная GET, называемая "page set". Если нет, я создаю новую переменную _pages. Указывая сначала переменную GET, называемую pages, я хочу убедиться, что файл, который я собираюсь включить, является допустимой страницей.
Для этого нам нужно включить файл; добавьте эту строку в index.php между div с id "main":
1 |
|
2 |
<?php require($_page.".php"); ?> |
Теперь у нас полный index.php:
1 |
|
2 |
<?php
|
3 |
session_start(); |
4 |
require("includes/connection.php"); |
5 |
if(isset($_GET['page'])){ |
6 |
|
7 |
$pages=array("products", "cart"); |
8 |
|
9 |
if(in_array($_GET['page'], $pages)) { |
10 |
|
11 |
$_page=$_GET['page']; |
12 |
|
13 |
}else{ |
14 |
|
15 |
$_page="products"; |
16 |
|
17 |
}
|
18 |
|
19 |
}else{ |
20 |
|
21 |
$_page="products"; |
22 |
|
23 |
}
|
24 |
|
25 |
?>
|
26 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
27 |
<html xmlns="http://www.w3.org/1999/xhtml"> |
28 |
<head>
|
29 |
|
30 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
31 |
<link rel="stylesheet" href="css/reset.css" /> |
32 |
<link rel="stylesheet" href="css/style.css" /> |
33 |
|
34 |
|
35 |
<title>Shopping Cart</title> |
36 |
|
37 |
|
38 |
</head>
|
39 |
|
40 |
<body>
|
41 |
|
42 |
<div id="container"> |
43 |
|
44 |
<div id="main"> |
45 |
|
46 |
<?php require($_page.".php"); ?> |
47 |
|
48 |
</div><!--end of main--> |
49 |
|
50 |
<div id="sidebar"> |
51 |
|
52 |
</div><!--end of sidebar--> |
53 |
|
54 |
</div><!--end container--> |
55 |
|
56 |
</body>
|
57 |
</html>
|



Давайте создадим соединение с MySQL. Откройте connections.php и пропишите следующее:
1 |
|
2 |
<?php
|
3 |
|
4 |
$server="localhost"; |
5 |
$user="tutorial"; |
6 |
$pass="supersecretpassword"; |
7 |
$db="tutorials"; |
8 |
|
9 |
// connect to mysql
|
10 |
|
11 |
mysql_connect($server, $user, $pass) or die("Sorry, can't connect to the mysql."); |
12 |
|
13 |
// select the db
|
14 |
|
15 |
mysql_select_db($db) or die("Sorry, can't select the database."); |
16 |
|
17 |
?>
|
Шаг 5
Пропишем разметку для страницы продуктов. Откройте её и введите следующее:
1 |
|
2 |
<h1>Product List</h1> |
3 |
<table>
|
4 |
<tr>
|
5 |
<th>Name</th> |
6 |
<th>Description</th> |
7 |
<th>Price</th> |
8 |
<th>Action</th> |
9 |
</tr>
|
10 |
<tr>
|
11 |
<td>Product 1</td> |
12 |
<td>Some random description</td> |
13 |
<td>15 $</th> |
14 |
<td><a href="#">Add to cart</a></td> |
15 |
</tr>
|
16 |
<tr>
|
17 |
<td>Product 2</td> |
18 |
<td>Some random description</td> |
19 |
<td>25 $</th> |
20 |
<td><a href="#">Add to cart</a></td> |
21 |
</tr>
|
22 |
</table>
|
Давайте посмотрим на страницу:



Как видите, это довольно уродливо. Давайте добавим этот CSS.
1 |
|
2 |
a {color: #48577D; text-decoration: none;} |
3 |
|
4 |
a:hover {text-decoration: underline;} |
5 |
|
6 |
h1, h2 {margin-bottom: 15px} |
7 |
|
8 |
h1 {font-size: 18px;} |
9 |
h2 {font-size: 16px} |
10 |
#main table { |
11 |
width: 480px; |
12 |
}
|
13 |
|
14 |
#main table th { |
15 |
padding: 10px; |
16 |
background-color: #48577D; |
17 |
color: #fff; |
18 |
text-align: left; |
19 |
}
|
20 |
|
21 |
#main table td { |
22 |
padding: 5px; |
23 |
}
|
24 |
#main table tr { |
25 |
background-color: #d3dcf2; |
26 |
}
|
Okay: другое дело:



Выглядит намного лучше, не так ли? Внизу указан полный код style.css:
1 |
|
2 |
body { |
3 |
font-family: Verdana; |
4 |
font-size: 12px; |
5 |
color: #444; |
6 |
}
|
7 |
|
8 |
a {color: #48577D; text-decoration: none;} |
9 |
|
10 |
a:hover {text-decoration: underline;} |
11 |
|
12 |
h1, h2 {margin-bottom: 15px} |
13 |
|
14 |
h1 {font-size: 18px;} |
15 |
h2 {font-size: 16px} |
16 |
|
17 |
#container { |
18 |
width: 700px; |
19 |
margin: 150px auto; |
20 |
background-color: #eee; |
21 |
padding:15px; |
22 |
overflow: hidden; |
23 |
}
|
24 |
|
25 |
#main { |
26 |
width: 490px; |
27 |
float: left; |
28 |
}
|
29 |
|
30 |
#main table { |
31 |
width: 480px; |
32 |
}
|
33 |
|
34 |
#main table th { |
35 |
padding: 10px; |
36 |
background-color: #48577D; |
37 |
color: #fff; |
38 |
text-align: left; |
39 |
}
|
40 |
|
41 |
#main table td { |
42 |
padding: 5px; |
43 |
}
|
44 |
|
45 |
#main table tr { |
46 |
background-color: #d3dcf2; |
47 |
}
|
48 |
|
49 |
#sidebar { |
50 |
width: 200px; |
51 |
float: left; |
52 |
}
|
Шаг 6
Прежде чем извлечь продукт из базы данных, давайте удалим последние две строки из нашей таблицы (были нужны только для того, чтобы увидеть, как она будет выглядеть). Удалить это:
1 |
|
2 |
<tr>
|
3 |
<td>Product 1</td> |
4 |
<td>Some random description</td> |
5 |
<td>15 $</th> |
6 |
<td><a href="#">Add to cart</a></td> |
7 |
</tr>
|
8 |
<tr>
|
9 |
<td>Product 2</td> |
10 |
<td>Some random description</td> |
11 |
<td>25 $</th> |
12 |
<td><a href="#">Add to cart</a></td> |
13 |
</tr>
|
Отлично! Теперь в том месте, где были строки таблицы, введите следующий код PHP:
1 |
|
2 |
<?php
|
3 |
|
4 |
$sql="SELECT * FROM products ORDER BY name ASC"; |
5 |
$query=mysql_query($sql); |
6 |
|
7 |
while ($row=mysql_fetch_array($query)) { |
8 |
|
9 |
?>
|
10 |
<tr>
|
11 |
<td><?php echo $row['name'] ?></td> |
12 |
<td><?php echo $row['description'] ?></td> |
13 |
<td><?php echo $row['price'] ?>$</td> |
14 |
<td><a href="index.php?page=products&action=add&id=<?php echo $row['id_product'] ?>">Add to cart</a></td> |
15 |
</tr>
|
16 |
<?php
|
17 |
|
18 |
}
|
19 |
|
20 |
?>
|
- Итак, сначала мы используем SELECT для извлечения продуктов, затем перебираем каждую строку из базы данных и переводим её на страницу в строке таблицы.
- Вы видите, что anchor ссылается на ту же страницу (когда пользователь выбирает продукт, добавляя в корзину/сеанс). Мы передаём некоторые дополнительные переменные, такие как id продукта.
Если вы укажете одну из ссылок для добавления в корзину, увидите в нижней части страницы, что id передан.

Шаг 7
Давайте сделаем anchor работу, добавив следующий код в начало нашей страницы:
1 |
|
2 |
<?php
|
3 |
|
4 |
if(isset($_GET['action']) && $_GET['action']=="add"){ |
5 |
|
6 |
$id=intval($_GET['id']); |
7 |
|
8 |
if(isset($_SESSION['cart'][$id])){ |
9 |
|
10 |
$_SESSION['cart'][$id]['quantity']++; |
11 |
|
12 |
}else{ |
13 |
|
14 |
$sql_s="SELECT * FROM products |
15 |
WHERE id_product={$id}"; |
16 |
$query_s=mysql_query($sql_s); |
17 |
if(mysql_num_rows($query_s)!=0){ |
18 |
$row_s=mysql_fetch_array($query_s); |
19 |
|
20 |
$_SESSION['cart'][$row_s['id_product']]=array( |
21 |
"quantity" => 1, |
22 |
"price" => $row_s['price'] |
23 |
);
|
24 |
|
25 |
|
26 |
}else{ |
27 |
|
28 |
$message="This product id it's invalid!"; |
29 |
|
30 |
}
|
31 |
|
32 |
}
|
33 |
|
34 |
}
|
35 |
|
36 |
?>
|
- Если переменная GET, называемая action, установлена и её значение равно ADD, мы выполняем код.
- Мы удостоверяемся, что id, прошедший через переменную GET, является целым числом
- Если id продукта находится в корзине SESSION, мы просто увеличиваем его количество на 1
- Если id не находится в сеансе, нам нужно убедиться, что id, прошедший через переменную GET, существует в базе данных. Если да, мы берем цену и создаём сессию. Если это не так, мы устанавливаем переменную с именем message, которая будет содержать нашу ошибку.
Проверим, установлена ли эта переменная сообщения и вызовите её на страницу (введите этот код под заголовком страницы H1):
1 |
|
2 |
<?php
|
3 |
if(isset($message)){ |
4 |
echo "<h2>$message</h2>"; |
5 |
}
|
6 |
?>
|
Вот полная страница products.php.
1 |
|
2 |
<?php
|
3 |
|
4 |
if(isset($_GET['action']) && $_GET['action']=="add"){ |
5 |
|
6 |
$id=intval($_GET['id']); |
7 |
|
8 |
if(isset($_SESSION['cart'][$id])){ |
9 |
|
10 |
$_SESSION['cart'][$id]['quantity']++; |
11 |
|
12 |
}else{ |
13 |
|
14 |
$sql_s="SELECT * FROM products |
15 |
WHERE id_product={$id}"; |
16 |
$query_s=mysql_query($sql_s); |
17 |
if(mysql_num_rows($query_s)!=0){ |
18 |
$row_s=mysql_fetch_array($query_s); |
19 |
|
20 |
$_SESSION['cart'][$row_s['id_product']]=array( |
21 |
"quantity" => 1, |
22 |
"price" => $row_s['price'] |
23 |
);
|
24 |
|
25 |
|
26 |
}else{ |
27 |
|
28 |
$message="This product id it's invalid!"; |
29 |
|
30 |
}
|
31 |
|
32 |
}
|
33 |
|
34 |
}
|
35 |
|
36 |
?>
|
37 |
<h1>Product List</h1> |
38 |
<?php
|
39 |
if(isset($message)){ |
40 |
echo "<h2>$message</h2>"; |
41 |
}
|
42 |
?>
|
43 |
<table>
|
44 |
<tr>
|
45 |
<th>Name</th> |
46 |
<th>Description</th> |
47 |
<th>Price</th> |
48 |
<th>Action</th> |
49 |
</tr>
|
50 |
|
51 |
<?php
|
52 |
|
53 |
$sql="SELECT * FROM products ORDER BY name ASC"; |
54 |
$query=mysql_query($sql); |
55 |
|
56 |
while ($row=mysql_fetch_array($query)) { |
57 |
|
58 |
?>
|
59 |
<tr>
|
60 |
<td><?php echo $row['name'] ?></td> |
61 |
<td><?php echo $row['description'] ?></td> |
62 |
<td><?php echo $row['price'] ?>$</td> |
63 |
<td><a href="index.php?page=products&action=add&id=<?php echo $row['id_product'] ?>">Add to cart</a></td> |
64 |
</tr>
|
65 |
<?php
|
66 |
|
67 |
}
|
68 |
|
69 |
?>
|
70 |
|
71 |
</table>
|
Вот сообщение об ошибке, если id недействителен



Шаг 8
Вернёмся к index.php и пропишем sidebar. Добавьте следующий код:
1 |
|
2 |
<h1>Cart</h1> |
3 |
<?php
|
4 |
|
5 |
if(isset($_SESSION['cart'])){ |
6 |
|
7 |
$sql="SELECT * FROM products WHERE id_product IN ("; |
8 |
|
9 |
foreach($_SESSION['cart'] as $id => $value) { |
10 |
$sql.=$id.","; |
11 |
}
|
12 |
|
13 |
$sql=substr($sql, 0, -1).") ORDER BY name ASC"; |
14 |
$query=mysql_query($sql); |
15 |
while($row=mysql_fetch_array($query)){ |
16 |
|
17 |
?>
|
18 |
<p><?php echo $row['name'] ?> x <?php echo $_SESSION['cart'][$row['id_product']]['quantity'] ?></p> |
19 |
<?php
|
20 |
|
21 |
}
|
22 |
?>
|
23 |
<hr /> |
24 |
<a href="index.php?page=cart">Go to cart</a> |
25 |
<?php
|
26 |
|
27 |
}else{ |
28 |
|
29 |
echo "<p>Your Cart is empty. Please add some products.</p>"; |
30 |
|
31 |
}
|
32 |
|
33 |
?>
|
- Сначала проверим, установлен ли сеанс корзины. Если нет, мы выводим сообщение, предупреждая пользователя о том, что корзина пуста.
- Затем создаём mysql SELECT, но мы выбираем только те продукты, которые присутствуют в этом сеансе. Для этого используем функцию foreach. Итак, мы проходим цикл и добавляем идентификатор продукта в SELECT. Затем мы используем функцию substr для удаления последней запятой из SELECT.
- В конце выводим данные в браузер.
Посмотрите на картинку снизу:






Поскольку index.php является шаблоном для всех файлов, sidebar также будет виден в cart.php. Разве это не круто ?!
Шаг 9
Наконец, откройте cart.php и введите код:
1 |
|
2 |
<h1>View cart</h1> |
3 |
<a href="index.php?page=products">Go back to products page</a> |
4 |
<form method="post" action="index.php?page=cart"> |
5 |
|
6 |
<table>
|
7 |
|
8 |
<tr>
|
9 |
<th>Name</th> |
10 |
<th>Quantity</th> |
11 |
<th>Price</th> |
12 |
<th>Items Price</th> |
13 |
</tr>
|
14 |
|
15 |
<?php
|
16 |
|
17 |
$sql="SELECT * FROM products WHERE id_product IN ("; |
18 |
|
19 |
foreach($_SESSION['cart'] as $id => $value) { |
20 |
$sql.=$id.","; |
21 |
}
|
22 |
|
23 |
$sql=substr($sql, 0, -1).") ORDER BY name ASC"; |
24 |
$query=mysql_query($sql); |
25 |
$totalprice=0; |
26 |
while($row=mysql_fetch_array($query)){ |
27 |
$subtotal=$_SESSION['cart'][$row['id_product']]['quantity']*$row['price']; |
28 |
$totalprice+=$subtotal; |
29 |
?>
|
30 |
<tr>
|
31 |
<td><?php echo $row['name'] ?></td> |
32 |
<td><input type="text" name="quantity[<?php echo $row['id_product'] ?>]" size="5" value="<?php echo $_SESSION['cart'][$row['id_product']]['quantity'] ?>" /></td> |
33 |
<td><?php echo $row['price'] ?>$</td> |
34 |
<td><?php echo $_SESSION['cart'][$row['id_product']]['quantity']*$row['price'] ?>$</td> |
35 |
</tr>
|
36 |
<?php
|
37 |
|
38 |
}
|
39 |
?>
|
40 |
<tr>
|
41 |
<td colspan="4">Total Price: <?php echo $totalprice ?></td> |
42 |
</tr>
|
43 |
|
44 |
</table>
|
45 |
<br /> |
46 |
<button type="submit" name="submit">Update Cart</button> |
47 |
</form>
|
48 |
<br /> |
49 |
<p>To remove an item, set it's quantity to 0. </p> |
Он похож на код из index.php и products.php, поэтому я не буду объяснять всё снова. Вы заметили, что количество теперь отображается не в форме, а в поле ввода (чтобы мы могли изменять количество). Кроме того, таблица заключена в form tag. Чтобы получить общую стоимость элементов, мы умножаем количество конкретного продукта (из сеанса) id на его цену. Это повторяется в каждом цикле.
ПРИМЕЧАНИЕ: input - это массив, key - это id продукта, а quantity - значение количества.



Шаг 10
Наконец, нам нужно заставить форму работать. Поэтому добавьте этот код в начало страницы cart.php.
1 |
|
2 |
if(isset($_POST['submit'])){ |
3 |
|
4 |
foreach($_POST['quantity'] as $key => $val) { |
5 |
if($val==0) { |
6 |
unset($_SESSION['cart'][$key]); |
7 |
}else{ |
8 |
$_SESSION['cart'][$key]['quantity']=$val; |
9 |
}
|
10 |
}
|
11 |
|
12 |
}
|
- Сначала проверяем, была ли предоставлена форма. Если была и значение ввода было равно нулю, мы отменяем этот сеанс.
- Если было любое другое значение, вместо него мы указываем количество.
Вот заполненный cart.php
1 |
|
2 |
<?php
|
3 |
|
4 |
if(isset($_POST['submit'])){ |
5 |
|
6 |
foreach($_POST['quantity'] as $key => $val) { |
7 |
if($val==0) { |
8 |
unset($_SESSION['cart'][$key]); |
9 |
}else{ |
10 |
$_SESSION['cart'][$key]['quantity']=$val; |
11 |
}
|
12 |
}
|
13 |
|
14 |
}
|
15 |
|
16 |
?>
|
17 |
|
18 |
<h1>View cart</h1> |
19 |
<a href="index.php?page=products">Go back to the products page.</a> |
20 |
<form method="post" action="index.php?page=cart"> |
21 |
|
22 |
<table>
|
23 |
|
24 |
<tr>
|
25 |
<th>Name</th> |
26 |
<th>Quantity</th> |
27 |
<th>Price</th> |
28 |
<th>Items Price</th> |
29 |
</tr>
|
30 |
|
31 |
<?php
|
32 |
|
33 |
$sql="SELECT * FROM products WHERE id_product IN ("; |
34 |
|
35 |
foreach($_SESSION['cart'] as $id => $value) { |
36 |
$sql.=$id.","; |
37 |
}
|
38 |
|
39 |
$sql=substr($sql, 0, -1).") ORDER BY name ASC"; |
40 |
$query=mysql_query($sql); |
41 |
$totalprice=0; |
42 |
while($row=mysql_fetch_array($query)){ |
43 |
$subtotal=$_SESSION['cart'][$row['id_product']]['quantity']*$row['price']; |
44 |
$totalprice+=$subtotal; |
45 |
?>
|
46 |
<tr>
|
47 |
<td><?php echo $row['name'] ?></td> |
48 |
<td><input type="text" name="quantity[<?php echo $row['id_product'] ?>]" size="5" value="<?php echo $_SESSION['cart'][$row['id_product']]['quantity'] ?>" /></td> |
49 |
<td><?php echo $row['price'] ?>$</td> |
50 |
<td><?php echo $_SESSION['cart'][$row['id_product']]['quantity']*$row['price'] ?>$</td> |
51 |
</tr>
|
52 |
<?php
|
53 |
|
54 |
}
|
55 |
?>
|
56 |
<tr>
|
57 |
<td colspan="4">Total Price: <?php echo $totalprice ?></td> |
58 |
</tr>
|
59 |
|
60 |
</table>
|
61 |
<br /> |
62 |
<button type="submit" name="submit">Update Cart</button> |
63 |
</form>
|
64 |
<br /> |
65 |
<p>To remove an item set its quantity to 0. </p> |



Надеюсь, урок вам понравился. Если появятся вопросы, посмотрите более подробный видеоурок!