当前位置:首页 > 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);

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

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 实现自动收货功能 自动收货功能通常用于电商系统,在订单超过一定时间未手动确认收货时自动完成订单。以下是实现方法: 数据库设计 需要订单表包含以下关键字段: CREATE TABLE o…

git php实现

git php实现

Git 与 PHP 的集成实现 使用 PHP 执行 Git 命令 通过 PHP 的 exec()、shell_exec() 或 passthru() 函数可以直接调用 Git 命令,适用于服务器端操作…

php实现增删改查

php实现增删改查

以下是在PHP中实现增删改查(CRUD)操作的详细方法,以MySQL数据库为例: 数据库连接配置 创建config.php文件存储数据库连接信息: <?php $host = 'localh…

php实现定时任务

php实现定时任务

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

基于php的设计与实现

基于php的设计与实现

PHP 设计与实现的关键要素 环境搭建与框架选择 PHP开发需配置服务器环境(如Apache/Nginx)、PHP版本(建议7.4+)及数据库(MySQL/MariaDB)。主流框架包括Laravel…

php实现静态

php实现静态

静态化实现方法 PHP实现静态化主要通过生成HTML文件或缓存机制来减少服务器动态解析的开销。以下是几种常见方法: 生成静态HTML文件 通过file_put_contents()将动态内容保存为…