آموزش ساخت فروشگاه اینترنتی با PHP | سبد خرید
خطای دسترسی
برای ثبت پاسخ، ابتدا باید در سایت وارد شوید.
طراحی و نمایش سبد خرید با استفاده از PHP و بانک اطلاعاتی
در این بخش، یاد میگیرید که چگونه یک سبد خرید ساده اما کاربردی را با استفاده از PHP و بانک اطلاعاتی طراحی کنید. سبد خرید مهمترین بخش فروشگاه اینترنتی است که کاربران میتوانند محصولات مورد نظر خود را در آن ذخیره کرده و مدیریت کنند.
برای شروع، باید یک جدول در بانک اطلاعاتی ایجاد کنید که دادههای سبد خرید را ذخیره کند. این جدول معمولاً شامل فیلدهای زیر است:
id: یک شماره منحصربهفرد برای هر رکورد (کلید اصلی و خودکار)user_id: آیدی کاربری که سبد خرید به او تعلق دارد (اگر کاربر وارد شده باشد)session_id: یک شناسه جلسه (session) برای کاربران مهمان (کسانی که وارد نشدهاند)product_id: آیدی محصولی که به سبد خرید اضافه شدهquantity: تعداد محصول انتخابی
کد SQL برای ایجاد این جدول به صورت زیر است:
CREATE TABLE cart (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT DEFAULT NULL,
session_id VARCHAR(255) NOT NULL,
product_id INT NOT NULL,
quantity INT NOT NULL DEFAULT 1,
FOREIGN KEY (product_id) REFERENCES products(id)
);
حالا نوبت به بخش PHP میرسد. برای نمایش سبد خرید، ابتدا باید دادههای کاربر را تشخیص دهید. اگر کاربر وارد سیستم شده است، از user_id استفاده کنید و اگر مهمان است، از session_id که با session_start() ایجاد میشود.
کد زیر نحوه اتصال به بانک اطلاعاتی و دریافت آیتمهای سبد خرید را نشان میدهد:
session_start();
include 'db.php'; // فایل اتصال به بانک اطلاعاتی
$user_id = isset($_SESSION['user_id']) ? $_SESSION['user_id'] : null;
$session_id = session_id();
if ($user_id) {
$query = "SELECT c.*, p.name, p.price, p.image FROM cart c JOIN products p ON c.product_id = p.id WHERE c.user_id = '$user_id'";
} else {
$query = "SELECT c.*, p.name, p.price, p.image FROM cart c JOIN products p ON c.product_id = p.id WHERE c.session_id = '$session_id'";
}
$result = mysqli_query($connection, $query);
در این کد، از JOIN برای دریافت اطلاعات محصول (نام، قیمت و تصویر) به همراه دادههای سبد خرید استفاده شده است.
برای نمایش بصری سبد خرید، میتوانید یک جدول HTML بسازید که هر ردیف شامل تصویر، نام، قیمت، تعداد و یک دکمه حذف باشد. کد زیر یک نمونه ساده از این نمایش است:
echo '<table border="1">';
echo '<tr><th>تصویر</th><th>نام محصول</th><th>قیمت</th><th>تعداد</th><th>مجموع</th><th>عملیات</th></tr>';
$total_price = 0;
while ($row = mysqli_fetch_assoc($result)) {
$subtotal = $row['price'] * $row['quantity'];
$total_price += $subtotal;
echo '<tr>';
echo '<td><img src="' . $row['image'] . '" width="50"></td>';
echo '<td>' . $row['name'] . '</td>';
echo '<td>' . $row['price'] . ' تومان</td>';
echo '<td>' . $row['quantity'] . '</td>';
echo '<td>' . $subtotal . ' تومان</td>';
echo '<td><a href="remove_from_cart.php?id=' . $row['id'] . '">حذف</a></td>';
echo '</tr>';
}
echo '<tr><td colspan="4">مجموع کل</td><td>' . $total_price . ' تومان</td></tr>';
echo '</table>';
توجه کنید که برای دکمه "حذف" به یک فایل جداگانه به نام remove_from_cart.php نیاز دارید که با دریافت آیدی رکورد، آن را از جدول حذف کند. کد نمونه برای این فایل:
session_start();
include 'db.php';
$id = $_GET['id'];
$query = "DELETE FROM cart WHERE id = $id";
mysqli_query($connection, $query);
header('Location: cart.php'); // بازگشت به صفحه سبد خرید
همچنین میتوانید یک فرم برای بهروزرسانی تعداد محصولات اضافه کنید. مثلاً فیلدهای متنی با قابلیت ویرایش که کاربر بتواند تعداد را تغییر دهد و با دکمه "بهروزرسانی" آن را ذخیره کند. برای این کار، یک حلقه for درست کنید و هر ردیف را با یک فرم جداگانه یا یک فرم کلی ارسال کنید.
نکته مهم: همیشه دادههای ورودی کاربر را اعتبارسنجی کنید تا از حملات SQL Injection جلوگیری شود. برای مثال، از mysqli_real_escape_string() استفاده کنید یا از Prepared Statements بهره ببرید.
برای ثبت پرسش ابتدا در سایت وارد شوید.