当前位置:首页 > PHP

php实现买书

2026-02-15 21:30:23PHP

PHP实现买书功能

在PHP中实现买书功能通常涉及数据库操作、表单处理和支付集成。以下是实现买书功能的关键步骤:

数据库设计 创建书籍表和订单表是基础。书籍表应包含id、书名、价格、库存等字段,订单表需要记录用户ID、书籍ID、数量、总价和订单状态。

CREATE TABLE books (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(100) NOT NULL,
    price DECIMAL(10,2) NOT NULL,
    stock INT NOT NULL
);

CREATE TABLE orders (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    book_id INT NOT NULL,
    quantity INT NOT NULL,
    total_price DECIMAL(10,2) NOT NULL,
    status VARCHAR(20) DEFAULT 'pending'
);

书籍展示页面 从数据库获取书籍列表并展示给用户,通常需要查询数据库并将结果循环输出。

$conn = new mysqli("localhost", "username", "password", "bookstore");
$result = $conn->query("SELECT * FROM books WHERE stock > 0");

while($row = $result->fetch_assoc()) {
    echo "<div class='book'>";
    echo "<h3>".$row['title']."</h3>";
    echo "<p>价格: ".$row['price']."</p>";
    echo "<form method='post' action='add_to_cart.php'>";
    echo "<input type='hidden' name='book_id' value='".$row['id']."'>";
    echo "<input type='number' name='quantity' min='1' max='".$row['stock']."'>";
    echo "<button type='submit'>加入购物车</button>";
    echo "</form>";
    echo "</div>";
}

购物车功能 使用Session存储用户选择的书籍和数量,实现临时购物车功能。

session_start();

if(isset($_POST['book_id']) && isset($_POST['quantity'])) {
    $book_id = $_POST['book_id'];
    $quantity = $_POST['quantity'];

    if(!isset($_SESSION['cart'])) {
        $_SESSION['cart'] = array();
    }

    $_SESSION['cart'][$book_id] = $quantity;
}

订单处理 从购物车生成订单,减少库存,并处理支付流程。

$conn = new mysqli("localhost", "username", "password", "bookstore");
$conn->begin_transaction();

try {
    $user_id = $_SESSION['user_id'];
    $total = 0;

    foreach($_SESSION['cart'] as $book_id => $quantity) {
        $book = $conn->query("SELECT * FROM books WHERE id = $book_id FOR UPDATE")->fetch_assoc();

        if($book['stock'] < $quantity) {
            throw new Exception("库存不足");
        }

        $subtotal = $book['price'] * $quantity;
        $total += $subtotal;

        $conn->query("UPDATE books SET stock = stock - $quantity WHERE id = $book_id");
        $conn->query("INSERT INTO orders (user_id, book_id, quantity, total_price) 
                     VALUES ($user_id, $book_id, $quantity, $subtotal)");
    }

    $conn->commit();
    unset($_SESSION['cart']);
    echo "订单创建成功";
} catch(Exception $e) {
    $conn->rollback();
    echo "错误: ".$e->getMessage();
}

支付集成 根据需求集成支付宝、微信支付或PayPal等支付网关,通常需要调用支付API并处理回调。

// 支付宝支付示例
$alipay = new AlipayService($appid, $privateKey, $alipayPublicKey);
$params = [
    'out_trade_no' => uniqid(),
    'total_amount' => $total,
    'subject' => '图书购买'
];
$payUrl = $alipay->createOrder($params);
header("Location: ".$payUrl);

订单状态更新 处理支付回调,更新订单状态为已支付。

php实现买书

if(verifyAlipayCallback($_POST)) {
    $out_trade_no = $_POST['out_trade_no'];
    $conn->query("UPDATE orders SET status = 'paid' WHERE id = $out_trade_no");
    echo "success";
}

实现完整的买书功能还需要考虑用户认证、输入验证、错误处理和界面设计等方面。根据实际需求,可能还需要添加优惠券、积分、物流跟踪等附加功能。

标签: 买书php
分享给朋友:

相关文章

php实现分页

php实现分页

PHP实现分页的基本方法 使用原生PHP实现分页功能需要结合数据库查询和HTML展示。以下是核心实现步骤: 数据库查询与分页逻辑 // 连接数据库 $conn = new mysqli('loca…

php实现定时任务

php实现定时任务

PHP 实现定时任务的几种方法 在 PHP 中实现定时任务可以通过多种方式完成,具体选择取决于项目需求和服务器环境。以下是常见的实现方法: 使用 Cron 任务 Cron 是 Linux 系统中常用…

php 登录实现

php 登录实现

PHP 登录实现 PHP 登录功能通常包括用户认证、会话管理和安全性措施。以下是实现 PHP 登录功能的关键步骤。 数据库准备 创建一个用户表存储用户信息,通常包括用户名、密码(加密存储)和其他必要…

php实现排序

php实现排序

PHP 数组排序方法 PHP 提供了多种内置函数用于数组排序,适用于不同的排序需求。以下是常见的排序方法: 按值升序排序 sort() 函数对数组按值升序排序,重置键名(索引数组适用): $num…

php 实现接口

php 实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不包含具体的实现。类可以实现(implement)接口,并必须实现接口中定义的所有方法。 定义接口 接口通…

php 购物车实现

php 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…