×

Tạo giỏ hàng đơn giản và quản lý phiên mua sắm trong PHP

Trong lập trình web, việc xây dựng một hệ thống giỏ hàng đơn giản và quản lý phiên mua sắm là một trong những yêu cầu cần thiết, đặc biệt khi triển khai các trang web thương mại điện tử. Bài viết này sẽ hướng dẫn bạn từng bước để phát triển một ứng dụng đơn giản sử dụng PHP nhằm quản lý giỏ hàng và phiên mua sắm của người dùng.

Khởi đầu với PHP Session

PHP Session là một trong những công cụ hữu ích để lưu trữ thông tin người dùng trên nhiều trang. Khi một người dùng bắt đầu phiên làm việc, một tệp dữ liệu nhỏ được lưu trên máy chủ, và từ đó các thông tin về giỏ hàng của người dùng sẽ được truy xuất một cách nhanh chóng, an toàn.

session_start();

Dòng mã trên sẽ khởi động phiên làm việc trong PHP. Mọi thao tác lưu trữ và truy xuất dữ liệu từ phiên làm việc đều phải đặt sau lệnh này.

Thêm sản phẩm vào giỏ hàng

Để thêm sản phẩm vào giỏ hàng, ta sẽ bắt đầu với một form đơn giản. Hãy tưởng tượng chúng ta có một danh sách sản phẩm trên trang web của chúng ta, và mỗi sản phẩm có một nút "Thêm vào giỏ hàng".

<form method="post" action="cart.php">
    <input type="hidden" name="product_id" value="101">
    <input type="hidden" name="product_name" value="Sản phẩm A">
    <input type="hidden" name="product_price" value="200000">
    <input type="submit" name="add_to_cart" value="Thêm vào giỏ hàng">
</form>

Khi người dùng nhấp vào nút "Thêm vào giỏ hàng", thông tin sản phẩm sẽ được gửi tới cart.php.

Lưu trữ sản phẩm trong phiên

Trong file cart.php, chúng ta cần xử lý dữ liệu nhận được và lưu trữ thông tin sản phẩm trong phiên:

session_start();

if (isset($_POST['add_to_cart'])) {
    $product_id = $_POST['product_id'];
    $product_name = $_POST['product_name'];
    $product_price = $_POST['product_price'];
    
    $product = [
        'id' => $product_id,
        'name' => $product_name,
        'price' => $product_price,
        'quantity' => 1 // Số lượng sản phẩm mặc định là 1
    ];
    
    if (isset($_SESSION['cart'])) {
        $found = false;
        
        // Kiểm tra xem sản phẩm đã tồn tại trong giỏ hàng chưa
        foreach ($_SESSION['cart'] as &$item) {
            if ($item['id'] == $product_id) {
                $item['quantity']++;
                $found = true;
                break;
            }
        }
        
        if (!$found) {
            $_SESSION['cart'][] = $product;
        }
    } else {
        $_SESSION['cart'][] = $product;
    }

    header('Location: view_cart.php');
}

Hiển thị giỏ hàng

Tạo một file mới view_cart.php để hiển thị nội dung giỏ hàng cho người dùng:

session_start();

if (!isset($_SESSION['cart']) || empty($_SESSION['cart'])) {
    echo "Giỏ hàng của bạn đang trống.";
} else {
    echo "<table>";
    echo "<tr><th>ID</th><th>Tên</th><th>Giá</th><th>Số lượng</th></tr>";

    foreach ($_SESSION['cart'] as $item) {
        echo "<tr>";
        echo "<td>{$item['id']}</td>";
        echo "<td>{$item['name']}</td>";
        echo "<td>{$item['price']} VND</td>";
        echo "<td>{$item['quantity']}</td>";
        echo "</tr>";
    }

    echo "</table>";
}

Xóa sản phẩm khỏi giỏ hàng

Để cho phép người dùng xóa sản phẩm khỏi giỏ hàng, chúng ta cần bổ sung chức năng vào trang giỏ hàng view_cart.php:

foreach ($_SESSION['cart'] as $index => $item) {
    echo "<tr>";
    echo "<td>{$item['id']}</td>";
    echo "<td>{$item['name']}</td>";
    echo "<td>{$item['price']} VND</td>";
    echo "<td>{$item['quantity']}</td>";
    echo "<td><a href='remove_item.php?index={$index}'>Xóa</a></td>";
    echo "</tr>";
}

Trong file remove_item.php, chúng ta sẽ xử lý việc xóa sản phẩm:

session_start();

if (isset($_GET['index']) && isset($_SESSION['cart'][$_GET['index']])) {
    unset($_SESSION['cart'][$_GET['index']]);
    $_SESSION['cart'] = array_values($_SESSION['cart']); // Đánh lại số chỉ mục
}

header('Location: view_cart.php');

Kết luận

Với các bước trên, bạn đã xây dựng thành công một hệ thống giỏ hàng đơn giản và quản lý phiên mua sắm trong PHP. Bạn có thể mở rộng thêm chức năng như cập nhật số lượng sản phẩm, tính tổng giá trị giỏ hàng, và tích hợp các phương thức thanh toán để tạo nên một trang web thương mại điện tử hoàn chỉnh. Chúc bạn thành công!

Comments