怎么用php写购物车
时间 : 2023-03-23 07:16:01声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性
购物车是一个常见的在线购物系统中必不可少的一部分。购物车主要功能是将顾客要购买的商品信息保存在一个中央位置,以便于顾客随时查看和管理,最后确认订单后一次性提交。在本篇文章中,我将介绍如何使用PHP编写一个简单的购物车系统。
1. 创建数据库
首先,我们需要创建一个MySQL数据库,用于存储商品信息和购物车数据。
创建数据库命令:
CREATE DATABASE IF NOT EXISTS shopping_cart;
创建商品表命令:
CREATE TABLE IF NOT EXISTS products (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
description TEXT,
price DECIMAL(10,2) NOT NULL,
image VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
创建购物车表命令:
CREATE TABLE IF NOT EXISTS cart (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
product_id INT(11) NOT NULL,
quantity INT(11) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
2. 连接数据库
使用PHP连接数据库,这里我们使用PDO来连接。
<?php
// 数据库配置
$servername = "localhost";
$username = "root";
$password = "password";
$dbname = "shopping_cart";
// 连接数据库
try {
$pdo = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
3. 显示商品列表和添加商品到购物车
创建一个PHP文件来显示商品列表和添加商品到购物车。
<?php
require("connection.php");
// 获取商品列表
$stmt = $pdo->prepare("SELECT * FROM products");
$stmt->execute();
$products = $stmt->fetchAll();
// 添加商品到购物车
if(isset($_POST['add_to_cart'])) {
$product_id = $_POST['product_id'];
$quantity = $_POST['quantity'];
$stmt = $pdo->prepare("INSERT INTO cart(product_id, quantity) VALUES(:product_id, :quantity)");
$stmt->bindParam(':product_id', $product_id);
$stmt->bindParam(':quantity', $quantity);
$stmt->execute();
header("Location: index.php");
exit();
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>购物车</title>
</head>
<body>
<h1>商品列表</h1>
<table>
<tr>
<th>商品名称</th>
<th>价格</th>
<th>图片</th>
<th>操作</th>
</tr>
<?php foreach($products as $product): ?>
<tr>
<td><?php echo $product['name']; ?></td>
<td><?php echo $product['price']; ?></td>
<td><img src="<?php echo $product['image']; ?>" alt="<?php echo $product['name']; ?>"></td>
<td>
<form method="post" action="">
<input type="hidden" name="product_id" value="<?php echo $product['id']; ?>">
<input type="number" name="quantity" value="1" min="1">
<input type="submit" name="add_to_cart" value="加入购物车">
</form>
</td>
</tr>
<?php endforeach; ?>
</table>
</body>
</html>
4. 显示购物车
创建一个PHP文件来显示购物车中的商品列表。
<?php
require("connection.php");
// 获取购物车列表
$stmt = $pdo->prepare("SELECT cart.id, products.name, products.price, cart.quantity FROM cart LEFT JOIN products ON cart.product_id = products.id");
$stmt->execute();
$cart_items = $stmt->fetchAll();
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>购物车</title>
</head>
<body>
<h1>购物车</h1>
<table>
<tr>
<th>商品名称</th>
<th>价格</th>
<th>数量</th>
<th>小计</th>
<th>操作</th>
</tr>
<?php
$total = 0;
foreach($cart_items as $cart_item):
$subtotal = $cart_item['quantity'] * $cart_item['price'];
$total += $subtotal;
?>
<tr>
<td><?php echo $cart_item['name']; ?></td>
<td><?php echo $cart_item['price']; ?></td>
<td><?php echo $cart_item['quantity']; ?></td>
<td><?php echo $subtotal; ?></td>
<td>
<form method="post" action="remove_from_cart.php">
<input type="hidden" name="cart_id" value="<?php echo $cart_item['id']; ?>">
<input type="submit" name="remove_from_cart" value="删除">
</form>
</td>
</tr>
<?php endforeach; ?>
<tr>
<td colspan="3">总计</td>
<td><?php echo $total; ?></td>
<td></td>
</tr>
</table>
</body>
</html>
5. 从购物车中移除商品
创建一个PHP文件来从购物车中移除商品。
<?php
require("connection.php");
if(isset($_POST['remove_from_cart'])) {
$cart_id = $_POST['cart_id'];
$stmt = $pdo->prepare("DELETE FROM cart WHERE id = :cart_id");
$stmt->bindParam(':cart_id', $cart_id);
$stmt->execute();
header("Location: cart.php");
exit();
}
?>
6. 完整示例
下面是一个完整的购物车示例,包括商品列表、购物车页面和从购物车中移除商品的功能。
- connection.php:连接数据库文件
<?php
// 数据库配置
$servername = "localhost";
$username = "root";
$password = "password";
$dbname = "shopping_cart";
// 连接数据库
try {
$pdo = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
- index.php:显示商品列表和添加商品到购物车
<?php
require("connection.php");
// 获取商品列表
$stmt = $pdo->prepare("SELECT * FROM products");
$stmt->execute();
$products = $stmt->fetchAll();
// 添加商品到购物车
if(isset($_POST['add_to_cart'])) {
$product_id = $_POST['product_id'];
$quantity = $_POST['quantity'];
$stmt = $pdo->prepare("INSERT INTO cart(product_id, quantity) VALUES(:product_id, :quantity)");
$stmt->bindParam(':product_id', $product_id);
$stmt->bindParam(':quantity', $quantity);
$stmt->execute();
header("Location: index.php");
exit();
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>购物车</title>
</head>
<body>
<h1>商品列表</h1>
<table>
<tr>
<th>商品名称</th>
<th>价格</th>
<th>图片</th>
<th>操作</th>
</tr>
<?php foreach($products as $product): ?>
<tr>
<td><?php echo $product['name']; ?></td>
<td><?php echo $product['price']; ?></td>
<td><img src="<?php echo $product['image']; ?>" alt="<?php echo $product['name']; ?>"></td>
<td>
<form method="post" action="">
<input type="hidden" name="product_id" value="<?php echo $product['id']; ?>">
<input type="number" name="quantity" value="1" min="1">
<input type="submit" name="add_to_cart" value="加入购物车">
</form>
</td>
</tr>
<?php endforeach; ?>
</table>
</body>
</html>
- cart.php:显示购物车中的商品列表
<?php
require("connection.php");
// 获取购物车列表
$stmt = $pdo->prepare("SELECT cart.id, products.name, products.price, cart.quantity FROM cart LEFT JOIN products ON cart.product_id = products.id");
$stmt->execute();
$cart_items = $stmt->fetchAll();
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>购物车</title>
购物车是电商网站中必不可少的功能之一。当用户在电商网站上浏览商品时,可以将自己想要购买的商品加入到购物车中,方便用户后续支付操作。下面我们来简单介绍一下如何用PHP实现购物车功能。
首先,我们需要考虑如何存储购物车中的商品信息。一般来说,有三种存储方式:
1. 存储在浏览器的Cookie中:这种方式比较简单,但是如果用户清除了浏览器Cookie或者使用不同浏览器访问网站,则无法取回之前加入的商品。
2. 存储在服务器的Session中:这种方式相对于存储在Cookie中更加安全可靠,但是当网站用户访问量较大时,会给服务器造成不小的压力。
3. 存储在数据库中:这种方式最为安全可靠,但是需要与数据库进行频繁的交互操作,性能比较低。
在这里,我们选择使用存储在服务器的Session中的方式来实现购物车功能。
接下来,我们来实现加入购物车功能。首先,我们需要在页面上显示商品列表,并为每个商品添加一个“加入购物车”的按钮。当用户点击某个商品的“加入购物车”按钮时,我们需要将商品的信息(比如商品ID、商品名称、商品价格等)存储在Session中,代码实现如下:
```php
// 开启Session
session_start();
// 获取要加入购物车的商品信息
$productId = $_POST['product_id'];
$productName = $_POST['product_name'];
$productPrice = $_POST['product_price'];
$productNum = $_POST['product_num'];
// 判断Session中是否已经有了该商品,如果有,则增加数量,否则新建一条记录
if(isset($_SESSION['cart'][$productId])) {
$_SESSION['cart'][$productId]['num'] += $productNum;
} else {
$_SESSION['cart'][$productId] = array(
'name' => $productName,
'price' => $productPrice,
'num' => $productNum
);
}
// 添加成功,页面跳转回原来商品列表页面
header('Location: product_list.php');
以上代码中,我们首先开启了Session,然后获取用户要加入购物车的商品信息,判断Session中是否已经有了该商品,如果有,则增加数量,否则新建一条记录。最后,添加成功后,页面跳转回原来的商品列表页面。
接下来,我们来实现查看购物车功能。当用户点击购物车图标,我们需要显示购物车中所有的商品信息,包括商品的名称、价格、数量等。代码实现如下:
```php
// 开启Session
session_start();
// 获取购物车中的所有商品信息
$cartGoods = isset($_SESSION['cart']) ? $_SESSION['cart'] : array();
// 循环遍历购物车所有商品,输出商品信息
foreach($cartGoods as $key => $val) {
echo '商品名称:' . $val['name'] . '<br>';
echo '商品价格:' . $val['price'] . '<br>';
echo '商品数量:' . $val['num'] . '<br>';
}
以上代码中,我们首先开启了Session,然后获取购物车中的所有商品信息,循环遍历购物车中所有商品,并输出商品信息。
最后,我们还需要实现清空购物车功能。当用户点击“清空购物车”按钮时,我们需要将购物车中的所有商品信息全部清除。代码实现如下:
```php
// 开启Session
session_start();
// 清空购物车中的所有商品信息
unset($_SESSION['cart']);
// 清空成功,页面跳转回原来的商品列表页面
header('Location: product_list.php');
以上代码中,我们首先开启了Session,然后使用unset()函数将购物车中的所有商品信息全部清除。最后,清空成功后,页面跳转回原来的商品列表页面。
综上所述,购物车功能的实现难度并不高,只需要理清购物车中商品信息的存储方式,并结合Session的使用,就可以轻松实现购物车功能。
上一篇
php怎么用搜索引擎
下一篇
php怎么做统计下载次数
https/SSL证书广告优选IDC>>
推荐主题模板更多>>
推荐文章