Загрузка данных
<?php
session_start();
// Проверяем, что корзина не пуста и пользователь авторизован
if (empty( $_SESSION['cart']) || !isset( $_SESSION['user'])) {
header('Location: cart.php');
exit;
}
// Пример массива товаров (замените на запрос к БД в реальном проекте)
$products = [
1 => ['name' => 'Монитор AOC 24"', 'price' => 15990],
2 => ['name' => 'Мышь Razer DeathAdder', 'price' => 4990],
3 => ['name' => 'Клавиатура Logitech K120', 'price' => 3490],
4 => ['name' => 'Наушники Sony WH-1000XM4', 'price' => 24990],
];
// Расчёт итогов
$total_items = 0;
$total_price = 0;
$cart_items = [];
foreach ( $_SESSION['cart'] as $product_id => $qty) {
if (isset( $products[$product_id])) {
$product = $products[$product_id];
$item_price = $product['price'] * $qty;
$cart_items[] = [
'id' => $product_id,
'name' => $product['name'],
'price' => $product['price'],
'qty' => $qty,
'item_price' => $item_price
];
$total_items += $qty;
$total_price += $item_price;
}
}
// Обработка формы оформления заказа
$errors = [];
$success = false;
if ( $_SERVER['REQUEST_METHOD'] === 'POST') {
// Валидация данных
$name = trim( $_POST['name'] ?? '');
$phone = trim( $_POST['phone'] ?? '');
$address = trim( $_POST['address'] ?? '');
$comment = trim( $_POST['comment'] ?? '');
if ( $name === '') $errors[] = 'Укажите имя';
if ( $phone === '') $errors[] = 'Укажите телефон';
if ( $address === '') $errors[] = 'Укажите адрес доставки';
// Если ошибок нет — оформляем заказ
if (empty( $errors)) {
// Здесь должна быть логика сохранения заказа в БД
// Для примера просто очищаем корзину и выводим сообщение
$_SESSION['cart'] = [];
$success = true;
}
}
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Оформление заказа</title>
<style>
* { margin:0; padding:0; box-sizing:border-box; }
body { font-family:Arial, sans-serif; background:#f4f4f4; color:#333; }
.container { max-width:1200px; margin:auto; padding:20px; }
.breadcrumbs { margin-bottom:20px; }
.breadcrumbs a { color:#27ae60; text-decoration:none; }
.checkout-grid { display:grid; grid-template-columns:2fr 1fr; gap:40px; }
@media (max-width:768px) { .checkout-grid { grid-template-columns:1fr; } }
.order-summary { background:#fff; padding:20px; border-radius:8px; box-shadow:0 2px 8px rgba(0,0,0,.1); }
.order-summary h3 { margin-bottom:15px; font-size:1.2em; }
.summary-item { display:flex; justify-content:space-between; margin-bottom:10px; font-size:1.1em; }
.summary-item strong { color:#e74c3c; }
.form-group { margin-bottom:20px; }
.form-group label { display:block; margin-bottom:8px; font-weight:bold; }
.form-group input, .form-group textarea { width:100%; padding:10px; border:1px solid #ccc; border-radius:4px; }
.form-group textarea { height:100px; resize:none; }
.btn-submit { display:inline-block; background:#3498db; color:#fff; padding:12px 25px; text-decoration:none; border-radius:6px; font-weight:bold; transition:background .3s;}
.btn-submit:hover { background:#2980b9; }
.error-message { color:#e74c3c; margin-bottom:20px; padding:10px; background:#fdf2f2; border-radius:4px;}
.success-message { color:#2ecc71; margin-bottom:20px; padding:10px; background:#f0fff4; border-radius:4px;}
</style>
</head>
<body>
<div class="container">
<!-- Хлебные крошки -->
<div class="breadcrumbs">
<a href="index.php">Главная</a> > <a href="cart.php">Корзина</a> > Оформление заказа
</div>
<h1>Оформление заказа</h1>
<?php if ( $success): ?>
<div class="success-message">
Ваш заказ успешно оформлен! Номер заказа будет отправлен на вашу почту или телефон.
<br><br>
<a href="index.php" class="btn-submit">Вернуться на главную</a>
</div>
<?php else: ?>
<div class="checkout-grid">
<!-- Форма оформления заказа -->
<div>
<?php if (!empty( $errors)): ?>
<div class="error-message">
<strong>Пожалуйста, исправьте следующие ошибки:</strong>
<ul>
<?php foreach ( $errors as $error): ?>
<li><?= htmlspecialchars( $error) ?></li>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
<form method="POST" action="checkout.php">
<div class="form-group">
<label for="name">Ваше имя:</label>
<input type="text" id="name" name="name" value="<?= htmlspecialchars( $name ?? '') ?>" required>
</div>
<div class="form-group">
<label for="phone">Телефон:</label>
<input type="tel" id="phone" name="phone" value="<?= htmlspecialchars( $phone ?? '') ?>" required>
</div>
<div class="form-group">
<label for="address">Адрес доставки:</label>
<input type="text" id="address" name="address" value="<?= htmlspecialchars( $address ?? '') ?>" required>
</div>
<div class="form-group">
<label for="comment">Комментарий к заказу (необязательно):</label>
<textarea id="comment" name="comment"><?= htmlspecialchars( $comment ?? '') ?></textarea>
</div>
<button type="submit" class="btn-submit">Оформить заказ</button>
</form>
</div>
<!-- Итоги заказа -->
<div class="order-summary">
<h3>Ваш заказ</h3>
<?php foreach ( $cart_items as $item): ?>
<p><?= htmlspecialchars( $item['name']) ?> × <?= $item['qty'] ?> шт. — <?= number_format( $item['item_price'], 0, '', ' ') ?> ₽</p>
<?php endforeach; ?>
<hr>
<div class="summary-item"><strong>Итого товаров:</strong> <?= $total_items ?> шт.</div>
<div class="summary-item"><strong>Общая сумма:</strong> <?= number_format( $total_price, 0, '', ' ') ?> ₽</div>
</div>
</div>
<?php endif; ?>
</div>
</body>
</html>